zoukankan      html  css  js  c++  java
  • ORACLE JOB

    oracle job 用来在数据库层面,定时执行存储过程或者是 SQL 语句。

    --创建、暂停、修改、删除 job

    --查询 当前库中运行的 job ;

    1. SELECT t.* FROM dba_jobs t

    --创建一个 定时任务 job

      

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

    --根据某个job下次的执行时间

    SELECT job,next_date,what FROM dba_jobs WHERE JOB = 定时任务的唯一标识码JOB; /*定时任务的下一次执行时间*/

      

    --手动调用job

    begin
     
    DBMS_JOB.RUN(40); /*40 job的id*/
     
    end;

    --停止 job

    begin
     
    dbms_job.broken(jobId,true,next_date); /*停止一个job,jobId, job的ID,里面参数true也可是false,next_date(某一时刻停止)也可是sysdate(立刻停止)。 */
     
    commit;
     
    end;

    --删除 job

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

    --修改 job 的间隔时间

    begin
     
    dbms_job.interval(job,interval); /*job job的ID,interval: 计算下一次任务执行的时间表达式*/
     
    commit;
     
    end;

    --修改下一次执行时间

    begin
     
    dbms_job.next_date(job,next_date); /*job: job 的ID;nex_date:要修改后的计算下一次执行的时间表达式*/
     
    commit;
     
    end;

    --修改定时任务 job 要执行的操作

    begin
     
    dbms_job.what('newProcedures();'); /*newProcedures(); 要更改的新操作名称*/
     
    commit;
     
    end;

    其他知识点:

    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) + (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)'
    每月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

    原文参考:http://cherryqq.iteye.com/blog/855022

      https://www.cnblogs.com/Chestnuts/p/7068456.html

  • 相关阅读:
    关闭编辑easyui datagrid table
    sql 保留两位小数+四舍五入
    easyui DataGrid 工具类之 util js
    easyui DataGrid 工具类之 后台生成列
    easyui DataGrid 工具类之 WorkbookUtil class
    easyui DataGrid 工具类之 TableUtil class
    easyui DataGrid 工具类之 Utils class
    easyui DataGrid 工具类之 列属性class
    oracle 卸载
    “云时代架构”经典文章阅读感想七
  • 原文地址:https://www.cnblogs.com/liuqiang18/p/10682112.html
Copyright © 2011-2022 走看看