使用 DBMS_SCHEDULER repeat_interval 到 运行 两天一次的任务
Use DBMS_SCHEDULER repeat_interval to run a task once in two days
我正在尝试创建一个任务(删除一些缓存数据),它将 运行 每两天执行一次。这将在 Oracle 11g
上 运行。到目前为止,我想出了以下匿名块:
begin
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'clear_cache',
job_type => 'PLSQL_BLOCK',
job_action => 'begin delete from MY_CACHE;commit; end;',
start_date => to_date('19/09/2016','dd/mm/rrrr')+ 19/24,
repeat_interval => 'to_date(''19/09/2016'',''dd/mm/rrrr'')+ 2 + 19/24',
enabled => TRUE);
end;
但是,我不确定 repeat_interval 值..
假设我今天要 运行 这个块 (15/09/2016
),我希望 clear_cache
在:
上执行
19/09/2016 at 7 p.m
21/09/2016 at 7 p.m.
23/09/2016 at 7 p.m.
etc
我知道如果我使用
start_date => sysdate,
repeat_interval => 'trunc(sysdate) + 7 + 7/24'
然后它将开始执行 today
,将在 7 p.m.
每 7
天重复一次,但我想要的是从下周一开始并每 2 天重复一次,我我不确定如何实现...
所以,我想知道到底要放入 repeat_interval
中什么...
谢谢。
值得使用 built-in calendaring syntax 而不是尝试自己动手。通过声明您希望作业每天 运行,间隔为 2,它将每 2 天 运行。
语法是 FREQ=DAILY;INTERVAL=2
,如果您将开始日期设置为晚上 7 点,那么它将在您当前时区的那个时间开始。
start_date
参数是一个日期,因此您可以在此处使用实际日期或时间戳。
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'clear_cache',
job_type => 'PLSQL_BLOCK',
job_action => 'begin delete from MY_CACHE; commit; end;',
start_date => timestamp '2016-09-19 19:00:00',
repeat_interval => 'FREQ=DAILY;INTERVAL=2',
enabled => TRUE);
我正在尝试创建一个任务(删除一些缓存数据),它将 运行 每两天执行一次。这将在 Oracle 11g
上 运行。到目前为止,我想出了以下匿名块:
begin
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'clear_cache',
job_type => 'PLSQL_BLOCK',
job_action => 'begin delete from MY_CACHE;commit; end;',
start_date => to_date('19/09/2016','dd/mm/rrrr')+ 19/24,
repeat_interval => 'to_date(''19/09/2016'',''dd/mm/rrrr'')+ 2 + 19/24',
enabled => TRUE);
end;
但是,我不确定 repeat_interval 值..
假设我今天要 运行 这个块 (15/09/2016
),我希望 clear_cache
在:
19/09/2016 at 7 p.m
21/09/2016 at 7 p.m.
23/09/2016 at 7 p.m.
etc
我知道如果我使用
start_date => sysdate,
repeat_interval => 'trunc(sysdate) + 7 + 7/24'
然后它将开始执行 today
,将在 7 p.m.
每 7
天重复一次,但我想要的是从下周一开始并每 2 天重复一次,我我不确定如何实现...
所以,我想知道到底要放入 repeat_interval
中什么...
谢谢。
值得使用 built-in calendaring syntax 而不是尝试自己动手。通过声明您希望作业每天 运行,间隔为 2,它将每 2 天 运行。
语法是 FREQ=DAILY;INTERVAL=2
,如果您将开始日期设置为晚上 7 点,那么它将在您当前时区的那个时间开始。
start_date
参数是一个日期,因此您可以在此处使用实际日期或时间戳。
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'clear_cache',
job_type => 'PLSQL_BLOCK',
job_action => 'begin delete from MY_CACHE; commit; end;',
start_date => timestamp '2016-09-19 19:00:00',
repeat_interval => 'FREQ=DAILY;INTERVAL=2',
enabled => TRUE);