如何将oracle作业配置为在00秒的每一分钟运行

时间:2019-05-10 11:57:59

标签: oracle oracle11g scheduler

我想在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秒运行一次作业。 请提出建议。

1 个答案:

答案 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参数可以解决精确分钟的问题。