您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页Oracle定时任务-查询-创建-删除-调用-定时任务时间参数

Oracle定时任务-查询-创建-删除-调用-定时任务时间参数

来源:华佗小知识

 查询

 创建

 

declare
  job number;
BEGIN
  DBMS_JOB.SUBMIT(  
        JOB => job,  /*自动生成JOB_ID*/  
        WHAT =>'PRO_USER_ORDER(to_char(SYSDATE,'yyyyMMdd'));',  /*需要执行的存储过程名称或SQL语句*/  
        NEXT_DATE => sysdate,  /*初次执行时间(立即执行)*/  
        INTERVAL => 'trunc(sysdate,''mi'')+1/(24*60)' /*执行间隔(每隔1分钟执行一次)*/
      );  
  commit;
end;


/*job     参数是输出参数,由submit()过程返回的binary_ineger,这个值用来唯一标识一个工作。一般定义一个变量接收,可以去user_jobs视图查询job值。 
what       参数是将被执行的PL/SQL代码块,存储过程名称等。 
next_date  参数指识何时将运行这个工作。 
interval   参数何时这个工作将被重执行。 
no_parse   参数指示此工作在提交时或执行时是否应进行语法分析——true,默认值false。指示此PL/SQL代码在它第一次执行时应进行语法分析,而FALSE指示本PL/SQL代码应立即进行语法分析。*/

 删除

-手动删除job   先查后删

begin
  dbms_job.remove(83);  --删除自动执行的job,参数是 job的id
  commit;
end;

 调用

--手动调用job

BEGIN
    DBMS_JOB.RUN (14) ; --14:job的id
END ;


--手动停止job

/*
    格式:dbms_job.broken(jobId,broken,next_date); 
    jobId:job的ID。
    broken:值为true时,表示禁用job,false时,表示启用job。
    next_date:(某一时刻停止),也可是sysdate(立刻停止)(默认值为sysdate)。
*/
BEGIN
    dbms_job.broken (jobId, TRUE, next_date) ; 
COMMIT ;
END ;

定时任务时间参数

描述                             INTERVAL参数值 
每天午夜12点                     TRUNC(SYSDATE + 1) 
每天早上8点30分                   TRUNC(SYSDATE + 1) + (8*60+30)/(24*60) 
每星期二中午12点                  NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24 
每个月第一天的午夜12点            TRUNC(LAST_DAY(SYSDATE ) + 1) 
每个季度最后一天的晚上11点         TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24 
每星期六和日早上6点10分            TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)

每秒钟执行次

Interval => sysdate + 1/(24 * 60 * 60)

如果改成sysdate + 10/(24 * 60 * 60)就是10秒钟执行次

每分钟执行 
Interval => TRUNC(sysdate,'mi') + 1/ (24*60)

如果改成TRUNC(sysdate,'mi') + 10/ (24*60) 就是每10分钟执行次

每天定时执行 
例如:每天的凌晨1点执行 
Interval => TRUNC(sysdate) + 1 +1/ (24)

每周定时执行 
例如:每周一凌晨1点执行 
Interval => TRUNC(next_day(sysdate,'星期一'))+1/24

每月定时执行 
例如:每月1日凌晨1点执行 
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24

每季度定时执行 
例如每季度的第一天凌晨1点执行 
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24

每半年定时执行 
例如:每年7月1日和1月1日凌晨1点 
Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24

每年定时执行 
例如:每年1月1日凌晨1点执行 
Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务