zoukankan      html  css  js  c++  java
  • oracle定时job粗解

    其中一篇随笔我写了oracle的存储过程大概的介绍,存储过程除了自身有in的param,来进行程序调用处理之外,还可以通过定时任务的方式调用来执行。

    应用场景:

      数据同步:有两个显示菜单,“信息编辑”,“信息查看”。前一个是面向员工随时填写、查看的,因此数据必须是实时的,而大部分开发场景下,这些数据不是只存在一张表内的,而是多表进行关联,这样速度会稍微慢些,但是是保证数据实时的;而后者的菜单时面向领导的,领导要求查看到的信息是大致准确的就可以,因此要做一个定时的任务,在半夜或者使用量的低谷期进行数据同步。

    常用参数:

    字段(列)                          类型                           描述 
    JOB                                NUMBER                  任务的唯一标示号 
    LOG_USER                     VARCHAR2(30)            提交任务的用户 
    PRIV_USER                     VARCHAR2(30)           赋予任务权限的用户 
    SCHEMA_USER                   VARCHAR2(30)          对任务作语法分析的用户模式 
    LAST_DATE                      DATE                最后一次成功运行任务的时间 
    LAST_SEC                      VARCHAR2(8)         如HH24:MM:SS格式的last_date日期的小时,分钟和秒 
    THIS_DATE                 DATE                正在运行任务的开始时间,如果没有运行任务则为null 
    THIS_SEC                 VARCHAR2(8)         如HH24:MM:SS格式的this_date日期的小时,分钟和秒 
    NEXT_DATE                     DATE                  下一次定时运行任务的时间 
    NEXT_SEC                     VARCHAR2(8)         如HH24:MM:SS格式的next_date日期的小时,分钟和秒 
    TOTAL_TIME                   NUMBER                该任务运行所需要的总时间,单位为秒 
    BROKEN                       VARCHAR2(1)           标志参数,Y标示任务中断,以后不会运行 
    INTERVAL                     VARCHAR2(200)         用于计算下一运行时间的表达式 
    FAILURES                   NUMBER               任务运行连续没有成功的次数 
    WHAT                           VARCHAR2(2000)            执行任务的PL/SQL块 
    CURRENT_SESSION_LABEL RAW          MLSLABEL           该任务的信任Oracle会话符 
    CLEARANCE_HI              RAW MLSLABEL     该任务可信任的Oracle最大间隙 
    CLEARANCE_LO                RAW              MLSLABEL 该任务可信任的Oracle最小间隙 
    NLS_ENV                   VARCHAR2(2000)   任务运行的NLS会话设置 
    MISC_ENV                  RAW(32)          任务运行的其他一些会话参数


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

    --查询
    select * from dba_jobs;
    select * from all_jobs;
    select a.*,rowid from user_jobs a;
    select * from dba_jobs_running;
    -- 创建job
    declare
    job_id number;--声明一个out变量
    begin
    -- 按天,每天09:30:00执行这个存储过程proc_myproc,并且输出一个job_id变量,其值为该job的ID号
    dbms_job.submit(
    job_id, --参数是输出参数,由submit()过程返回的binary_ineger,这个值用来唯一标识一个工作。一般定义一个变量接收,可以去user_jobs视图查询job值。
    'sap_salesrep_info_v_p;', --参数是将被执行的PL/SQL代码块,存储过程名称等。
    sysdate, --参数指识何时将运行这个工作。
    'trunc(sysdate,''mi'') + 1/ 144' --参数何时这个工作将被重执行。
    );
    -- 把job的ID号打印出来
    dbms_output.put_line(job_id);
    end;
    -- 运行job
    begin
    -- 这个7为job_id,请换为你自己对应的job号
    dbms_job.run(7);
    end;
    -- 启用job
    begin
    dbms_job.broken(7,false);
    end;
    -- 禁用job
    begin
    dbms_job.broken(7,true);
    end;
    -- 删除一个job
    begin
    dbms_job.remove(375);
    end;

  • 相关阅读:
    php提取字符串中的数字
    php中urlencode()和urldecode()URL编码函数浅析[转]
    B2C电子商务系统研发——商品SKU分析和设计(一)
    电商ERP系统——商品SKU与库存设计
    爬虫实战:爬虫之 web 自动化终极杀手 ( 上)
    鸟瞰前端 , 再论性能优化
    反-反爬虫:用几行代码写出和人类一样的动态爬虫
    小巧玲珑:机器学习届快刀XGBoost的介绍和使用
    从零开始接入腾讯云智能推荐
    云技术平台赋能媒体融合发展创新
  • 原文地址:https://www.cnblogs.com/qiujiababy/p/8243884.html
Copyright © 2011-2022 走看看