【问题标题】:DBMS_SCHEDULER JOB randomly skips runDBMS_SCHEDULER JOB 随机跳过运行
【发布时间】:2016-12-25 22:43:30
【问题描述】:

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

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

我尝试设置:

  • freq=每日间隔=1
  • freq=每日间隔=1 BYHOUR=0 BYMINUTE=1
  • freq=Weekly BYDAY="周一、周二等..." BYHOUR=0 BYMINUTE=1

以上都失败了。

实际上有超过 24 小时的执行,并且下一个作业运行是立即的,但也发生了该作业跳过一天并安排下一次运行在第二天。

编辑: 我注意到在(示例)时跳过了运行: *有这样的间隔: 频率=每周; BYDAY=周一、周二、周三、周四、周五、周六、周日;按小时=0; BYMINUTE=1;BYSECOND=0

  1. 在星期一执行期间,跳过了一些链步骤(在星期一),作业在星期二完成执行,并在星期三设置下一次运行。

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

【问题讨论】:

  • 你设置属性schedule_limit了吗?检查也查看ALL_SCHEDULER_JOB_LOG
  • 我没有设置限制。我检查了日志,没有什么有趣的 - 日志级别已满

标签: oracle jobs chain dbms-scheduler


【解决方案1】:

举个例子

  • 周一开始 00:01,下一次计划为周二 00:01。 23:07 结束
  • 周二 00:01 开始,下周三 00:01 开始,周三 00:05 结束
  • 星期三 00:05 开始(延迟,因为星期二仍在进行中)

你需要注意的是周三开始,因为这将决定下一次开始的时间。如果它设置为“每日间隔 = 1”,它至少不会再运行一天。使用每小时间隔但使用按小时/按分钟过滤器,因此它不会每小时运行一次。

【讨论】:

  • 感谢您的回复。如果我设置“每小时间隔 = 24 BYHOUR = 0 BYMINUTE = 1”并且从你的例子中是星期三。它不会等待下一个 00:01 发生吗?结果下一次运行将是星期四 00:01?
【解决方案2】:

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

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

【讨论】:

  • 莫普坦,我写了关于处决和立即下一次运行的文章。作业已启用。
猜你喜欢
  • 1970-01-01
  • 2022-01-27
  • 2018-02-19
  • 2013-08-14
  • 2013-11-11
  • 2011-02-04
  • 2011-07-12
  • 1970-01-01
  • 2021-12-18
相关资源
最近更新 更多