首页 文章

DBMS_SCHEDULER JOB随机跳过运行

提问于
浏览
0

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

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

我试着设置:

  • freq =每日间隔= 1

  • freq =每日间隔= 1 BYHOUR = 0 BYMINUTE = 1

  • freq =每周BYDAY = " mon, tue, etc... " BYHOUR = 0 BYMINUTE = 1

以上都失败了 .

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

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

  • 在周一执行期间,跳过了一些连锁步骤(星期一),工作在星期二完成执行,并在星期日设定下一次运行 .

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

2 回答

  • 1

    举个例子

    • 星期一开始00:01,下一次安排在星期二00:01 . 完成23:07

    • 星期二开始00:01,下次安排在星期三00:01,结束星期三00:05

    • 周三开始于00:05(延迟,因为周二还在运行)

    这是你需要注意的星期三开始,因为这将决定下一个开始时间 . 如果设置为'daily interval = 1',它将至少运行一天 . 按小时间隔,但使用byhour / byminute过滤器,因此它不会每小时运行一次 .

  • 0

    你试过这项工作吗?

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

相关问题