gpt4 book ai didi

oracle - 使用 DBMS_SCHEDULER repeat_interval 两天运行一次任务

转载 作者:行者123 更新时间:2023-12-04 01:51:38 24 4
gpt4 key购买 nike

我正在尝试创建一个两天运行一次的任务(删除一些缓存数据)。这将在 Oracle 11g 上运行。到目前为止,我想出了以下匿名 block :

 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)运行这个 block ,我希望在以下时间执行 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'

然后它将在 今天 开始执行,将在每 7 天的 7 p.m. 重复,但我想要的是从下一个开始星期一,每 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 - 使用 DBMS_SCHEDULER repeat_interval 两天运行一次任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39510733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com