• oracle job定时执行存储过程详解


    一、定义job

    declare job number;
    begin
            dbms_job.submit(
                     job =>job,
                     what=>'PROC1;PROC2;',
                     next_date => sysdate,
                     interval =>'TRUNC(SYSDATE + 1))';--每天凌晨同步一次
                    commit;
    end;

    二、trunc函数对时间的作用

    1.select trunc(sysdate) from dual           --2014/8/20  今天的日期
    2.select trunc(sysdate, 'mm')   from   dual      --2014/8/1    返回当月第一天.
    3.select trunc(sysdate,'yy') from dual         --2014/1/1      返回当年第一天
    4.select trunc(sysdate,'dd') from dual         --2014/8/20    返回当前年月日
    5.select trunc(sysdate,'yyyy') from dual        --2014/1/1   返回当年第一天
    6.select trunc(sysdate,'d') from dual         --2014/8/17   返回当前星期的第一天(星期天为第一天)
    7.select trunc(sysdate, 'hh') from dual         --2014/8/20 11:00:00     返回当前小时
    8.select trunc(sysdate, 'mi') from dual        --2014/8/20 11:50:00     放回当前的分钟

    三、job定时执行设置

    描述                                  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

  • 相关阅读:
    第五周学习进度报告
    第四周学习进度报告
    第三周大数据学习进度
    十六周总结
    程序员修炼之道-从小工到专家阅读笔记03
    第二阶段冲刺10
    利用正则表达式,分割地址至省市县,更新MySQL数据库数据
    阅读笔记--《大型网站技术架构》—01大型网站概述
    第三周周总结——kettle的简单使用以及MYSQL数据库去重
    热词分析中运用可用性战术
  • 原文地址:https://www.cnblogs.com/lingbaozhangqian/p/3924196.html
Copyright © 2020-2023  润新知