首页 文章

Oracle Scheduler - 使用单个作业创建复杂的计划

提问于
浏览
3

我有一个在Oracle 10g数据库上运行的Job,其执行计划非常简单 .

BYDAY=MON,TUE,WED,THU,FRI;BYHOUR=6,10,14,18

现在的问题是我们必须改变计划 - 但仅限于星期一 . 所以在星期一,第一份工作应该是8而不是6,然后像所有其他工作一样(10,14,18) . 而从周二到周五,它应如上所述 .

最简单的方法是为星期一创建第二个作业,并从原始作业中删除星期一 . 但是,这对我们的应用程序来说是一个问题,因为它依赖于每次导入一个作业 .

所以问题是:有没有办法告诉调度程序在单独的工作中在TAY-FRI和8,10,14,18的7,10,14,18点运行?

我读到了使用PL / SQL表达式指定重复间隔 . 但我没有发现是否有办法做到这一点 .

谢谢你的帮助

1 回答

  • 5

    创建复合计划,并在创建时将其分配给作业 .

    例如:

    begin
      dbms_scheduler.create_schedule('MY_SCHED1', repeat_interval =>
      'FREQ=DAILY;BYDAY=TUE,WED,THU,FRI;BYHOUR=6,10,14,18');
    END;
    /
    begin
    dbms_scheduler.create_schedule('MY_SCHED2', repeat_interval =>
      'FREQ=DAILY;BYDAY=MON;BYHOUR=8,10,14,18');
    END;
    /
    begin
    dbms_scheduler.create_schedule('MAIN', repeat_interval =>
      'MY_SCHED1, MY_SCHED2');
    END;
    /
    

    现在,您只需将“MAIN”命名计划分配给作业而不是计划字符串 .

相关问题