我需要安排从0600到1800的工作。工作应该每两个小时运行一次。例如0800,1000,1200,1400,1600,1800。
以下是我迄今为止设法完成的代码:
DECLARE
l_id binary_integer;
begin
sys.dbms_job.submit(job => l_id, what => 'integration_export;', interval => 'TRUNC(SYSDATE,''hh24'')+0/24/60');
sys.dbms_output.put_line(l_id);
end;
当然,这将在每2小时后运行一次,而不会在1801 - 0759停止。我该如何添加此限制? 我要做的一件事就是创建另一个计划程序,该计划在1801年醒来并在NEXT_DATE更改此作业。但是,我想知道这是不是一个好主意。
有什么建议吗?
提前致谢: - )
答案 0 :(得分:7)
dbms_job
已经过时了。我建议你改用dbms_scheduler
(在Oracle 10g中引入)。
dbms_scheduler.create_job(job_name => 'YOUR_JOB',
job_type => 'PLSQL_BLOCK',
job_action => 'integration_export;',
start_date => systimestamp,
repeat_interval => 'freq=hourly; byhour=8,10,12,14,16,18; byminute=0; bysecond=0;',
enabled => true,
auto_drop => false,
comments => 'some comment about the job');
答案 1 :(得分:2)
使用高级dbms_scheduler而不是dmbs_job。这是一个例子:
begin
DBMS_SCHEDULER.create_job (
job_name => 'Integration_export',
job_type => 'PLSQL_BLOCK',
job_action => 'integration_export;',
start_date => SYSTIMESTAMP,
enabled => TRUE,
repeat_interval => 'freq=daily; byhour=6,8,10,12,14,16,18; byminute=0; bysecond=0');
end;
/