dbms_scheduler创建作业未运行作业

时间:2017-08-23 15:47:52

标签: oracle oracle11g

我正在尝试通过dbms_scheduler运行一个过程但它刚刚创建但没有运行。 DataBase版本使用Oracle 11.2.x

程序

create or replace procedure count_comp
as
Total_count number;
begin
select count(*) into Total_count from user_tables;
dbms_output.put_line('Number   '|| Total_count);
end;

创建作业

BEGIN
DBMS_SCHEDULER.CREATE_JOB (
        job_name => 'My_Count_Job',
        job_type => 'STORED_PROCEDURE',
        job_action => 'count_comp',
        start_date => '28-APR-08 07.00.00 PM Asia/Calcutta',
        repeat_interval => 'FREQ=DAILY;INTERVAL=2', /* every other day */
        auto_drop => FALSE,
        enabled =>TRUE,
        comments => 'My new job');
END;
/

2 个答案:

答案 0 :(得分:3)

下面提到的一些可能的原因。 job_queue_processes可能太低了 要检查以下执行查询 从v $ parameter中选择值,其中name =' job_queue_processes';

然后检查正在运行的作业数

select count(*) from dba_scheduler_running_jobs;
select count(*) from dba_jobs_running;

如果这是问题,您可以使用

增加参数
alter system set job_queue_processes=1000;

2)max_job_slave_processes可能太低 如果此参数不为NULL,则它会限制dbms_scheduler作业的数量 一次跑。检查w

select value from dba_scheduler_global_attribute
where attribute_name='MAX_JOB_SLAVE_PROCESSES';

然后检查正在运行的作业数

select count(*) from dba_scheduler_running_jobs;

如果这是问题,您可以使用

增加数字或将其清空
exec dbms_scheduler.set_scheduler_attribute('max_job_slave_processes',null)

3)会话可能太低

4)检查调度程序是否已被禁用

select value from dba_scheduler_global_attribute where attribute_name='SCHEDULER_DISABLED'

如果此查询返回TRUE,则可以使用此方法解决此问题 SQL> exec dbms_scheduler.set_scheduler_attribute('scheduler_disabled','false');

答案 1 :(得分:0)

SELECT JOB_NAME, STATE FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'partition_table_plapp2';

以上查询会告诉您工作的状态:已启用,已禁用,已安排

select JOB_NAME, STATUS, ERROR#, ADDITIONAL_INFO from ALL_SCHEDULER_JOB_RUN_DETAILS where job_name = 'partition_table' ;

以上查询会告诉您在工作时出了什么问题。

一旦找到工作中的问题,我们可以进一步调查。

如果您正在使用sqldeveloper(sql developer)创建和安排DBMS_SCHEDULER(dbms scheduler)作业,我建议您浏览此页面:http://www.opencodez.com/oracle/oracle-job-scheduler-guide-examples-part-1.htm