zoukankan      html  css  js  c++  java
  • oracle 定时任务

    以下脚本可执行,都是我在工作中用过的脚本,亲测。

     1 --创建一个定时任务
     2 declare
     3   job number;
     4 BEGIN
     5   DBMS_JOB.SUBMIT(  
     6         JOB => job,  /*自动生成JOB_ID*/  
     7         WHAT => 'GET_WARNING_INFO(2, 202, ''2,44,11'');',  /*需要执行的存储过程名称或SQL语句*/  
     8         NEXT_DATE => sysdate,  /*初次执行时间-立即执行*/  
     9         INTERVAL => 'trunc(sysdate,''mi'')+1/(24*60)' /*每隔1分钟执行一次*/
    10       );  
    11   commit;
    12 end;
    13 --删除定时任务
    14 begin
    15   dbms_job.remove(83);  /*删除自动执行的job,参数是 job的id*/
    16   commit;
    17 end;
    18 
    19 ----------------------------------定时任务处理启动结束 start-----------------------
    20 --    电子签章定时任务处理  
    21  DECLARE   
    22   v_job NUMBER;    
    23  BEGIN
    24    SELECT t.JOB INTO v_job  FROM dba_jobs t WHERE t.WHAT = 'NON_FLOW_PKG.SAVE_NON_FLOW_ACT_FOR_SIGN;' 
    25    dbms_job.run(v_job);     --启动定时任务
    26   --dbms_job.broken(v_job, true, sysdate);    --结束定时任务     true:结束 
    27  commit;   
    28 end;
    29 ----------------------------------定时任务处理启动结束 end--------------------------------
    30 
    31 ----------------------------------定时任务查询  start--------------------------------
    32 --
    33 --查看定时任务 启动(25 2012/9/14 1 11:06:17 0 n) 停止(25 4000/1/1 00:00:00 0 y) 状态  
    34 -- job:定时任务Id   next_date: 时间明确 就是下次执行时间,4000-1-1 定时任务处于停止状态  failures:任务执行失败的总次数  broken: Y:停止 N:开启 
    35  select what,job, next_date, next_sec, failures, broken from user_jobs ;  --查询当前用户定时任务
    36  
    37   SELECT t.WHAT,job, next_date, next_sec, failures, broken FROM dba_jobs t    --查询数据库里所有任务
    38    WHERE t.WHAT = 'NON_FLOW_PKG.SAVE_NON_FLOW_ACT_FOR_SIGN;'   --定时任务名称
    39    OR t.JOB = '21';    --定时任务编号
    40  -- 命令窗口查看进程数  必须大于10    这个是定时任务执行的最小进程数,当定时任务开启但是没执行,看下这个,小于0必须改到大于10 
    41  --在命令窗口看
    42 show parameter job_queue_processes;
    43 -- 不大于0修改
    44 alter system set job_queue_processes=10;
    45 
    46 ----------------------------------定时任务查询  end--------------------------------
    47   

    dba_jobs 表中字段含义:

    JOB 任务的唯一标识码

    LOG_USER 提交任务的用户

    PRIV_USER 赋予任务权限的用户

    SCHEMA_USER 对用户作语法分析的用户模式

    LAST_DATE 最后一次成功执行任务的时间

    LAST_SEC 最后一次成功执行任务的时间的时分秒

    THIS_DATE 正在执行的任务的开始时间,若没有则为空

    THIS_SEC 正在执行的任务的开始时间的时分秒,若没有则为空

    NEXT_DATE 下一次执行定时任务的时间

    NEXT_SEC 下一次执行定时任务的时间的时分秒

    TOTAL_TIME 执行当前任务所需要的时间,单位:秒

    BROKEN 标志参数,Y表示任务中断,以后不会再运行

    INTERTAL 计算下一次执行定时任务的时间表达式

    FAILURES 当前定时任务执行失败的总次数

    WHAT 执行任务的PL/SQL代码块

    NLS_ENV 任务执行的NLS会话设置

    MISC_ENV 定时任务运行的其他一些参数设置

    INSTANCE 标识当前任务运行是否受限,0 没有受限

    INTERVAL 部分参数值示例:

    每天午夜12点: ‘TRUNC(SYSDATE + 1)’
    每天早上8点30分: ‘TRUNC(SYSDATE + 1) + (860+30)/(2460)’
    每星期二中午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)’
    每月25号00:00执行: ‘TRUNC(LAST_DAY(SYSDATE ) + 25)’
    --------------------------
    1:每分钟执行
    Interval => TRUNC(sysdate,‘mi’) + 1/ (24*60)

    Interval => sysdate+1/1440

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

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

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

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

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

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

  • 相关阅读:
    谈谈Oracle基本操作(下)
    谈谈Oracle基本操作(上)
    java理论之java多线程与网络编程
    java理论之java--GUI(图形用户管理)与 IO/流
    java理论之java数组和集合
    存图片的
    .html()渲染后的内容还是带标签的字符串的问题
    Vuejs报错error: Unexpected console statement (no-console) at src... 解决办法
    常用正则表达式
    移动WEB---01.关于屏幕像素
  • 原文地址:https://www.cnblogs.com/studynode/p/12119445.html
Copyright © 2011-2022 走看看