zoukankan      html  css  js  c++  java
  • Oracle定时计划快速使用

    Oracle定时计划快速使用

    前言:

          SQL Server中有相关的定时计划,可以直接打开sql server 的任务管理器进行配置,可以方便、快速实现定时执行相应任务。相应的Oracle也有对应的定时计划,只不过没有一个很好的图形界面供用户去操作。本文主要是为了方便用户在Oracle中快速创建定时计划,定期执行相应的sql或者存储过程。

    1.   创建定时计划

    说明:以下所有的示例代码,都需要用户先连上sql/plus之后,在sql/plus中执行。

    1.1      创建存储过程

    存储过程不是必须的,只不过是把相关的一系列的sql语句整合在一块,方便执行。

    示例:

    create or replace procedure update_black_gray_list as

    begin

    UPDATE SMS_BLACKLIST //要执行的sql语句

    SET FLAG='0',"ENABLE"='2',

    FDATE=TO_DATE(TO_DATE(TO_CHAR(SYSDATE, 'yyyy-mm-dd'), 'yyyy-mm-dd')),

    TDATE=TO_DATE(TO_DATE(TO_CHAR(SYSDATE+7, 'yyyy-mm-dd'), 'yyyy-mm-dd'))

    WHERE FLAG='0' AND "ENABLE"='0' AND

    TDATE<TO_DATE(TO_DATE(TO_CHAR(SYSDATE, 'yyyy-mm-dd'), 'yyyy-mm-dd'));

    end;

    /

    1.2      创建定时计划

    示例:

    variable update_list_job number;

    begin

    dbms_job.submit(:update_list_job,'update_black_gray_list;',TRUNC(SYSDATE),'TRUNC(SYSDATE+1)');

    end;

    /

    变量update_list_job是为了存储创建生成的计划的唯一标识号,方便删除,查看该定时计划的相关信息

    1.2.1 dbms_job.submit() 说明

    PROCEDURE submit (

    job  OUT  binary_ineger,

    what IN varchar2,

    next_date  IN date,

    interval IN varchar2,

    no_parse IN booean:=FALSE)

    这个过程有五个参数:job、what、next_date、interval与no_parse。

    job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识job

    what参数是将被执行的PL/SQL代码块(一般多是存储过程)。

    next_date参数指识何时将运行这个工作。

    interval参数何时这个工作将被重执行。

    interval是指上一次执行结束到下一次开始执行的时间间隔, 当interval设置为null时,该job执行结束后,就被从队列中删除。假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。

    示例:

    每天运行一次 'SYSDATE + 1' 

    每小时运行一次 'SYSDATE + 1/24' 

    每分钟运行一次 'SYSDATE + 1/(60*24)' 

    每秒运行一次 'SYSDATE + 1/(60*24*60)' 

    每隔一星期运行一次 'SYSDATE + 7' 

    每天午夜12点 'TRUNC(SYSDATE + 1)' 

    每天早上1点30分 'TRUNC(SYSDATE + 1) + (1*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)'

    不再运行该任务并删除它 NULL

    no_parse参数指示此工作在提交时或执行时是否应进行语法分析(默认为false——TRUE指示此PL/SQL代码在它第一次执行时应进行语法分析,而FALSE指示本PL/SQL代码应立即进行语法分析。

    1.3      执行定时计划

    示例:

    begin

    dbms_job.run(:update_list_job);

    end;

    /

    1.4      删除定时计划

    示例:

    begin

    dbms_job.remove(:update_list_job);

    end;

    /

    2.   查看所有定时计划

    select  *  from  user_jobs;

    3.   删除定时计划

    3.1 删除所有定时计划

    begin

      for v in(select job from user_jobs) loop
        dbms_job.remove(v.job);
      end loop;
      commit;

    end;

    3.2 删除指定内容的定时计划

    begin

      for v in(select job from user_jobs where what in( 'the_what_name;' ) )

    loop

           dbms_job.remove(v.job);

        end loop;

      commit;

    end;

    /

    3.3 删除指定用户的定时计划

    begin

      for v in(select job from user_jobs where log_user='USERXXXX') loop

        dbms_job.remove(v.job);

      end loop;

      commit;

    end;

    /

     

  • 相关阅读:
    python操作mysql封装成类
    es 数据 导出 到 MySQL
    Elasticsearch的数据导出和导入操作(elasticdump工具),以及删除指定type的数据(delete-by-query插件)
    解决VM虚拟机中的ubuntu不能全屏的问题
    pandas操作,感觉不错,复制过来的
    BTree和B+Tree详解
    ant安装配置
    jmeter默认生成测试报告
    学习网站
    selenium多窗口切换(windows)
  • 原文地址:https://www.cnblogs.com/Olive116/p/5140444.html
Copyright © 2011-2022 走看看