oracle 作业间隔时间公式

在Oracle中,设置作业(例如DBMS_SCHEDULER作业或DBMS_JOB作业)时,可以使用INTERVAL参数来指定作业的间隔时间。对于DBMS_SCHEDULER作业,可以使用以下格式指定间隔:

'SYSDATE + (n/24/60)'

其中n是间隔的分钟数。例如,每天8次的间隔可以这样设置:

'SYSDATE + (480/24/60)'

对于DBMS_JOB作业,可以使用类似的格式,但是需要使用TRUNC(SYSDATE + n/24/60)来指定具体的时间点。

以下是一个创建DBMS_SCHEDULER作业的例子,每20分钟运行一次:

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
    job_name        => 'my_job',
    job_type        => 'PLSQL_BLOCK',
    job_action      => 'BEGIN null; END;',
    start_date      => SYSTIMESTAMP,
    repeat_interval => 'FREQ=DAILY; BYMINUTE=0,20,40', -- 每天三次
    enabled         => TRUE,
    comments        => 'Job to run every 20 minutes');
END;
/

对于DBMS_JOB作业,例子如下:

DECLARE
  job_id NUMBER;
BEGIN
  DBMS_JOB.SUBMIT (
    job       => job_id,
    what      => 'PACKAGE_NAME.PROCEDURE_NAME;',
    next_date => TRUNC(SYSDATE) + (CASE WHEN TO_CHAR(SYSDATE, 'MM/DD/YYYY HH24:MI') < '12/31/1899 12:00' THEN 0 ELSE 1/24 END), -- 12点0分开始
    interval  => 'TRUNC(SYSDATE,''MI'') + 20/24/60' -- 每20分钟
  );
  
  COMMIT;
END;
/

请根据实际情况选择合适的方法创建作业,并调整时间间隔。

 

posted on 2025-01-16 19:25  癫狂编程  阅读(145)  评论(0)    收藏  举报

导航

好的代码像粥一样,都是用时间熬出来的