Oracle计划程序-重复间隔2天和时间
是否可以在一个作业中创建重复间隔为2天和2次的作业? 例如,每个星期一凌晨02:00,每个星期五下午03:00Oracle计划程序-重复间隔2天和时间,oracle,scheduler,frequency,jobs,repeat,Oracle,Scheduler,Frequency,Jobs,Repeat,是否可以在一个作业中创建重复间隔为2天和2次的作业? 例如,每个星期一凌晨02:00,每个星期五下午03:00 repeat_interval => 'FREQ=DAILY;BYDAY=MON; byhour=02; byminute=00; bysecond=00', repeat_interval => 'FREQ=DAILY;BYDAY=FRI; b
repeat_interval => 'FREQ=DAILY;BYDAY=MON;
byhour=02; byminute=00; bysecond=00',
repeat_interval => 'FREQ=DAILY;BYDAY=FRI;
byhour=15; byminute=00; bysecond=00',
这些频率,但在一个作业重复间隔内
谢谢为其中一个间隔创建一个命名计划,并使用INCLUDE like 编辑版本: 因为
INCLUDE
不支持byminute,byhour
。所以我这样修改了它,我所做的,将第一项工作描述为dayly,在每个星期五启动,但添加了开始时间戳,并指出了时间。所以它在每个星期五的那个时候重复,然后把它包括在第二份工作中
declare
ts timestamp := to_timestamp_tz('28/04/2017 09:00:00',
'DD/MM/YYYY HH24:MI:SS');
begin
dbms_scheduler.create_schedule('FRIDAY_SCHED', start_date => ts,
repeat_interval => 'FREQ=DAILY;BYDAY=FRI;');
dbms_scheduler.create_schedule('ALL_SCHED',
repeat_interval => 'FREQ=DAILY;BYDAY=MON; byhour=02; byminute=00; bysecond=00;INCLUDE=FRIDAY_SCHED');
end;
可以用这种方法测试周期
declare
start_date timestamp;
return_date_after timestamp;
next_run_date timestamp;
begin
start_date := to_timestamp_tz('28/04/2017 09:00:00',
'DD/MM/YYYY HH24:MI:SS');
return_date_after := start_date;
for i in 1 .. 5 loop
DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING('FREQ=DAILY;BYDAY=FRI;',
start_date, return_date_after,
next_run_date);
DBMS_OUTPUT.PUT_LINE('next_run_date: ' || next_run_date);
return_date_after := next_run_date;
end loop;
end;
它不起作用。2742200000-“在嵌入式日历应用程序\%s\\%s\\*中不支持使用%s原因:主日历定义在INCLUDE、EXCLUDE、INTERSECT或FREQ子句中使用了嵌入式日历,对其应用了额外的限制*操作:从日历定义中删除特定子句。