DBMS_SCHEDULER JOB随机跳过运行

时间:2016-08-18 21:23:48

标签: oracle jobs chain dbms-scheduler

我必须创建一个调度程序作业,它每天在00:01执行链。

如果作业执行时间超过24H,则下一次运行应在当前完成后立即开始。

我试着设置:

  • freq =每日间隔= 1
  • freq =每日间隔= 1 BYHOUR = 0 BYMINUTE = 1
  • freq =每周BYDAY ="星期一,星期二等..." BYHOUR = 0 BYMINUTE = 1

以上都失败了。

实际上执行的时间超过了24小时,下一次工作立即开始,但也发生了一天的工作,并计划在第二天进行下一次工作。

编辑: 我注意到(例子)时跳过了运行: *有这样的间隔: FREQ = WEEKLY; BYDAY =周一,周二,周三,周四,周五,周六,周日; BYHOUR = 0; BYMINUTE = 1; BYSECOND = 0

  1. 在星期一执行期间,一些连锁步骤被跳过(星期一),工作在星期二完成执行,并在星期日设定下一步。

  2. 暂停了连锁步骤(只有一个,还有更多)。在星期一执行期间,我取消了步骤,工作在星期二完成执行,并在星期日设置下一次运行。

2 个答案:

答案 0 :(得分:1)

举个例子

  • 星期一开始00:01,下一次安排在星期二00:01。完成23:07
  • 星期二开始00:01,下次安排在星期三00:01,结束星期三00:05
  • 周三00:05开始(延迟,因为周二还在运行)

这是你需要注意的星期三开始,因为这将决定下一个开始时间。如果设置为'每日间隔= 1'它不会再跑一天了。按小时间隔,但使用byhour / byminute过滤器,这样它就不会每小时运行一次。

答案 1 :(得分:0)

您是否尝试过启用此作业?

BEGIN
  DBMS_SCHEDULER.enable(name=>'"schema"."job_name"');
END;