将作业添加到调度程序以每天自动调用该作业

时间:2014-03-10 09:55:01

标签: sql oracle job-scheduling dbms-scheduler

我创建的作业每天09:00:00运行。

以下是我用来创建工作的片段:

BEGIN
            Dbms_Scheduler.create_job(
                job_name   => 'PROECSS_STATE_ARCH'
               ,job_type   => 'STORED_PROCEDURE' 
               ,job_action   => 'TEST' -- Procedure Name
               ,start_date   => SYSDATE 9:00:00
               ,repeat_interval => 'freq=DAILY'
               ,enabled   => TRUE
               ,comments   => 'job schedule for archiving process_state');
END; 

唯一的目的是每天09:00:00运行存储过程'TEST'

如何将此作业添加到调度程序以在每天自动调用此作业? 有谁能告诉我??

1 个答案:

答案 0 :(得分:0)

您还需要指定byhour以便每天晚上9点开始工作。

BEGIN
            Dbms_Scheduler.create_job(
                job_name   => 'PROECSS_STATE_ARCH'
               ,job_type   => 'STORED_PROCEDURE' 
               ,job_action   => 'TEST' -- Procedure Name
               ,start_date   => SYSDATE
               ,repeat_interval => 'freq=DAILY; byhour=9' --Added byhour
               ,enabled   => TRUE
               ,comments   => 'job schedule for archiving process_state');
END; 
/

要在您的方案上运行此功能,您需要CREATE JOB权限。否则,您需要在任何其他特权用户上运行此操作。在这种情况下,将job_action指定为

job_action   => '<SCHEMA_NAME>.TEST'

要编辑作业,您在DBMS_SCHEDULER包中有SET_ATTRIBUTE过程。

例如: -

BEGIN
     DBMS_SCHEDULER.SET_ATTRIBUTE (
          name => 'PROECSS_STATE_ARCH',
          attribute => 'repeat_interval',
          value => 'freq=DAILY; byhour=10' --Everyday by 10 AM.
          ); 
END;