DBMS_SCHEDULER JOBS每天早上跑到晚上

时间:2012-11-19 04:06:58

标签: oracle oracle10g jobs job-scheduling dbms-scheduler

我希望让JOBS在oracle 10g中使用DBMS_SCHEDULER,其中作业每分钟刷新一次,每天运行间隔为2分钟,从早上8点开始,到晚上8点结束。我试过这段代码,

BEGIN
  SYS.DBMS_SCHEDULER.CREATE_JOB
    (
       job_name        => 'UPDATE_REKAP_BALI'
      ,start_date      => trunc(sysdate) + 8/24
      ,repeat_interval => 'freq=MINUTELY;interval=2'
      ,end_date        => trunc(sysdate) + 20/24
      ,job_class       => 'DEFAULT_JOB_CLASS'
      ,job_type        => 'STORED_PROCEDURE'
      ,job_action      => 'UPDATEREKAPBALI'
      ,comments        => NULL
    );
END

但是,当我第二天检查时,作业没有运行,我猜这些作业永远不会在第二天的08.00 AM再次运行。

3 个答案:

答案 0 :(得分:0)

确保在提交作业后提交。

编辑这是不正确的:DBMS_SCHEDULER执行隐式提交,与之前需要显式提交的DBMS_JOB不同。

答案 1 :(得分:0)

您必须将auto_drop设置为false,因为自动删除会使作业在运行后被删除一次,因此将其设为false

BEGIN
    DBMS_SCHEDULER.CREATE_JOB (
    job_name        => 'TEST_J',
    job_type        => 'CHAIN',
    job_action      => 'TEST_C',
    auto_drop       => FALSE,
    repeat_interval => 'FREQ=DAILY;BYHOUR=08,09,10,11,12,13,14,15,16,17,18,19;BYMINUTE=02,04,06,08,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,00;BYSECOND=00;',
    enabled         => TRUE);

END;
/

默认情况下启用自动删除功能 http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sched.htm#i1000363

答案 2 :(得分:0)

答案是两个链接远

  1. http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sched.htm#CIHGCDBJ - 表93-54窗口属性值
  2. 表中的
  3. 'repeat_interval'行指向“Calendaring Syntax”链接http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sched.htm#BABFBCEF,您可以在其中找到如何根据Oracle设置计划