Oracle 调度程序 - 重复间隔 2 个不同的日期和时间
Oracle Scheduler - repeat interval 2 different days and times
是否可以在一个作业中以 2 个不同的日期和时间创建具有重复间隔的作业?
例如,每个星期一 02:00:上午和每个星期五 03:00 下午。
repeat_interval => 'FREQ=DAILY;BYDAY=MON;
byhour=02; byminute=00; bysecond=00',
repeat_interval => 'FREQ=DAILY;BYDAY=FRI;
byhour=15; byminute=00; bysecond=00',
这些频率,但一起在一个工作中 repeat_interval。
谢谢
为其中一个间隔创建命名计划并使用 INCLUDE 等
编辑版本:
因为 INCLUDE
不支持 byminute, byhour
.etc 我这样改变了它,我做了什么,将第一份工作描述为每天,每周五触发,但添加了一个开始时间戳,并指出了一个时间.所以它在每个星期五的那个时间重复,然后将其包含在第二份工作中。
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;
是否可以在一个作业中以 2 个不同的日期和时间创建具有重复间隔的作业? 例如,每个星期一 02:00:上午和每个星期五 03:00 下午。
repeat_interval => 'FREQ=DAILY;BYDAY=MON;
byhour=02; byminute=00; bysecond=00',
repeat_interval => 'FREQ=DAILY;BYDAY=FRI;
byhour=15; byminute=00; bysecond=00',
这些频率,但一起在一个工作中 repeat_interval。
谢谢
为其中一个间隔创建命名计划并使用 INCLUDE 等
编辑版本:
因为 INCLUDE
不支持 byminute, byhour
.etc 我这样改变了它,我做了什么,将第一份工作描述为每天,每周五触发,但添加了一个开始时间戳,并指出了一个时间.所以它在每个星期五的那个时间重复,然后将其包含在第二份工作中。
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;