zoukankan      html  css  js  c++  java
  • oracle定期运行job

    数据库:oracle 11g,操作都在pl/sql客户端完成

    第一步、创建一个”E_P_FFM_STATE(fltdt in varchar2)“存储过程

    第二步、打开Command Window,创建job,

    1 var job_num number;
    2 begin 
    3   dbms_job.submit(:job_num,'E_P_FFM_STATE(null);',SYSDATE,'sysdate+5/24/60'); --5分钟执行一次
    4 end;

    执行成功,job id是25

    第三步、运行job

    1 begin
    2   dbms_job.run(:job_num);
    3 end;

    在pl/sql左边,打开DBMS_Jobs,看到”25“的job

    本来就这几步,简单得很,但我也查了许久,中间总有东西不对,按照上述步骤应该会成功

    后记:

    1. 网上说要设置job_queue_processes,决定能运行的job数目,但我运行

    后来查到说是要用 SYSDBA 管理员账号登录。如果可以使用dba登录,使用

    alter system set job_queue_processes=10 scope=both;

    可以修改这个参数

    2.dbms_job使用参数说明

    • submit,创建
    dbms_job.submit(:jobno,--job号
        'your_procedure;',--要执行的过程/sql
        trunc(sysdate)+1/24,--下次执行时间
        'trunc(sysdate)+1/24+1'--每次间隔时间
    );
    •  修改

    dbms_job.what(jobno,what); --修改要执行的过程/sql语句
    dbms_job.next_date(job,next_date);--修改下次执行时间
    dbms_job.interval(job,interval);--修改间隔时间
    • 启动
    dbms_job.run(jobno);--启动job
    • 停止
    dbms.broken(jobno,--job号
    broken,--true/false
    nextdate --执行时刻
    );--停止job

    执行完以后记得commit事务

    • 删除
    dbms_job.remove(jobno);--删除job

    也要commit事务,成功后pl/sql左边DBMS_Jobs就看不到”25“的job

    3. 常用执行示例

    INTERVAL参数值 描述
    TRUNC(SYSDATE+1) 每天午夜12点
    TRUNC(SYSDATE+1)+(8*60+30)/(24*60) 每天早上8点30分
    TRUNC(next_day(sysdate,1))+2/24  每周一凌晨2点执行
    TRUNC(LAST_DAY(SYSDATE))+1+1/24  每月1日凌晨1点执行
    TRUNC(LAST_DAY(SYSDATE)+1) 每个月第一天的午夜12点
    TRUNC(ADD_MONTHS(SYSDATE,3),'q')+1/24 每季度的第一天凌晨1点执行
    TRUNC(ADD_MONTHS(SYSDATE+2/24,3),'q')-1/24 每季度的最后一天的晚上11点执行
    ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24 每年7月1日和1月1日凌晨1点 
    ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24 每年1月1日凌晨1点执行
       

    4. 相关数据表

    select * from user_jobs
    select * from all_jobs
    select * from dba_jobs
  • 相关阅读:
    如何:使用向导来处理项目模板 【转载】
    .NET : 如何在生成XML文档时绑定样式表
    如何在生产环境部署K2的流程
    SQL Server 数据库文档生成工具开源项目【合作邀请】
    新的纪元
    SharePoint : 谁说WSS不支持审核
    C++ : 类型的别名和对象的别名
    C++: 引用和地址运算符
    Infopath : 如何通过代码复制格式文本框的值
    正确地使用投影仪和移动硬盘
  • 原文地址:https://www.cnblogs.com/yhzh/p/5120940.html
Copyright © 2011-2022 走看看