1

I want make JOBS use DBMS_SCHEDULER in oracle 10g, where jobs refresh minutely with interval 2 minute running everyday start at 08.00 AM and end at 08.00 PM. I have tried this code,

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

but, when i check on the next day, the jobs is not running, i guess that the jobs is never running up again on 08.00 AM at the next day.

4

3 回答 3

0

Make sure you commit after submitting the job.

Edit This is incorrect: DBMS_SCHEDULER performs an implicit commit, unlike the previous DBMS_JOB which required an explicit commit.

于 2012-11-19T05:51:18.270 回答
0

答案是两个链接远

  1. http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sched.htm#CIHGCDBJ - 表 93-54 窗口属性值
  2. 表中的“repeat_interval”行指向“日历语法”链接http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sched.htm#BABFBCEF,您可以在其中了解如何在甲骨文条款
于 2014-04-11T09:43:54.657 回答
0

你必须做auto_dropto false ,因为 auto drop 会使作业在运行后被丢弃一次,所以将其设置为 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

于 2014-03-17T10:39:20.467 回答