我想在oracle中创建一个作业,该作业每00分钟运行一分钟,例如01:00(MI:SS),02:00和03:00 ...
我创建了一个如下所示的工作
begin
sys.dbms_job.submit(job => :job,
what => 'RECONUAT.USP_LOCK_APP_AFTER_EODTIME;',
next_date => to_date('10-05-2019 17:17:32', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'SYSDATE+1/1440');
commit;
end;
/
它也每分钟运行一次,但秒数却像01:00、02:16、03:32 ...
我的要求是每隔00秒运行一次作业。 请提出建议。
答案 0 :(得分:2)
sys.dbms_job.submit
已过时,建议使用sys.dbms_scheduler.create_job
作为
declare
v_job_name varchar2(32) := 'JB_LOCK_APP_AFTER_EODTIME';
begin
sys.dbms_scheduler.create_job(
job_name => v_job_name,
job_type => 'STORED_PROCEDURE',
job_action => 'RECONUAT.USP_LOCK_APP_AFTER_EODTIME',
start_date => to_date('10-05-2019 15:00:00', 'dd-mm-yyyy hh24:mi:ss'),
repeat_interval => 'FREQ=MINUTELY;INTERVAL=1;BYSECOND=0;',
auto_drop => false,
comments => 'Populates our table every minute');
dbms_scheduler.enable(v_job_name);
end;
开始时间可以选择在当前时间之前。将BYSECOND=0
添加到repeat_interval
参数可以解决精确分钟的问题。