【发布时间】:2019-09-23 04:46:29
【问题描述】:
无法通过删除 END_DATE 来运行已完成的 DBMS_SCHEDULER 作业
大家好!
我正在使用 oracle 12cR1,现在我在 DBMS_SCHEDULER 工作中遇到了问题。
首先,我创建了一个重复的 oracle DBMS_SCHEDULER 作业,并设置了END_DATE,
设置END_DATE后,作业成功完成,作业的启用状态自动变为禁用。
根据作业的运行日志,Operation 为COMPLETED,而 Additional info 为REASON="End time reached"
这是意料之中的。
然后我想再次运行该作业,我删除了END_DATE字段
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE('JOB_XXX', 'END_DATE', '');
并通过
设置作业启用SYS.DBMS_SCHEDULER.ENABLE(name => 'JOB_XXX');
我可以看到该作业再次启用并且 END_DATE 为空。
但是Job只运行了一次就停止了,运行日志是COMPLETED,而附加信息又是REASON="End time reached"。
BEGIN
sys.dbms_scheduler.CREATE_JOB(
JOB_NAME => 'JOB_3358',
job_type => 'STORED_PROCEDURE',
JOB_ACTION => 'TEST_JOB',
START_DATE => to_date('2019-05-05 13:35:00','yyyy-mm-dd hh24:mi:ss'),
REPEAT_INTERVAL => 'FREQ= SECONDLY;INTERVAL=30',
END_DATE => to_date('2019-05-05 13:38:00','yyyy-mm-dd hh24:mi:ss'),
auto_drop => FALSE,
COMMENTS => NULL);
END;
/
begin
sys.dbms_scheduler.enable(name => 'JOB_3358');
end;
/
我的预期是作业将再次按照REPEAT_INTERVAL 运行,
由于end_date 是空的,它不应该停止。
删除END_DATE有什么错误,还是oracle的bug?
提前致谢,并致以最诚挚的问候!
【问题讨论】:
-
猜猜看:
DBMS_SCHEDULER.set_attribute_null (name=>'JOB_3358', attribute=>'end_date') -
我试过了,没用,工作停止了。还是谢谢!
-
也许that link可以帮助你实现你的目标-
标签: oracle oracle12c dbms-scheduler