我有工作,使用DBMS_JOB创建,每天凌晨1点运行
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日
有没有办法可以指定要运行的作业的日期列表?
答案 0 :(得分:2)
没有
但是,您可以创建希望作业运行的日期列表,并在执行该过程之前检查当前日期是否为其中一个日期。只要在程序中执行,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。