【问题标题】:Schedule a job on specific dates using DBMS_JOB使用 DBMS_JOB 在特定日期安排作业
【发布时间】:2013-10-15 17:26:31
【问题描述】:

我有工作,使用 DBMS_JOB 创建,每天凌晨 1:00 运行

    WHAT        PROC_XYZ();
    NEXT_DATE   16-OCT-13
    NEXT_SEC    01:00:00
    INTERVAL    trunc(sysdate)+1+1/24

我想将其更改为在特定日期运行(没有模式或固定间隔),例如:2013 年 10 月 30 日、2013 年 11 月 14 日、2013 年 11 月 18 日

有没有一种方法可以指定作业运行的日期列表?

【问题讨论】:

    标签: oracle oracle10g dbms-job


    【解决方案1】:

    没有。

    但是,您可以创建一个希望作业运行的日期列表,并在执行该过程之前检查当前日期是否是这些日期之一。 RETURN statement 将在过程中执行后立即将控制权返回给调用代码。

    所以,在程序的第一行执行如下代码:

    if trunc(sysdate) not in (date '2013-10-30', date '2013-11-14') then
       return;
    end if;
    

    我可能会使用表格而不是日期列表,因此无需更改代码即可轻松修改。如果您每天运行该作业,那么它将立即退出所有天,但您希望它完全运行。

    DBMS_JOB 文档顶部的注释值得一读:

    DBMS_JOB 包已被 DBMS_SCHEDULER 包取代。特别是,如果您正在管理作业以管理系统负载,则应考虑通过撤销用户的包执行权限来禁用 DBMS_JOB。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-12
      • 2016-11-14
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 2019-10-01
      相关资源
      最近更新 更多