我希望让JOBS在oracle 10g中使用DBMS_SCHEDULER,其中作业每分钟刷新一次,每天运行间隔为2分钟,从早上8点开始,到晚上8点结束。我试过这段代码,
BEGIN
SYS.DBMS_SCHEDULER.CREATE_JOB
(
job_name => 'UPDATE_REKAP_BALI'
,start_date => trunc(sysdate) + 8/24
,repeat_interval => 'freq=MINUTELY;interval=2'
,end_date => trunc(sysdate) + 20/24
,job_class => 'DEFAULT_JOB_CLASS'
,job_type => 'STORED_PROCEDURE'
,job_action => 'UPDATEREKAPBALI'
,comments => NULL
);
END
但是,当我第二天检查时,作业没有运行,我猜这些作业永远不会在第二天的08.00 AM再次运行。
答案 0 :(得分:0)
确保在提交作业后提交。
编辑这是不正确的:DBMS_SCHEDULER执行隐式提交,与之前需要显式提交的DBMS_JOB不同。
答案 1 :(得分:0)
您必须将auto_drop
设置为false
,因为自动删除会使作业在运行后被删除一次,因此将其设为false
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'TEST_J',
job_type => 'CHAIN',
job_action => 'TEST_C',
auto_drop => FALSE,
repeat_interval => 'FREQ=DAILY;BYHOUR=08,09,10,11,12,13,14,15,16,17,18,19;BYMINUTE=02,04,06,08,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,00;BYSECOND=00;',
enabled => TRUE);
END;
/
默认情况下启用自动删除功能 http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sched.htm#i1000363
答案 2 :(得分:0)
答案是两个链接远