zoukankan      html  css  js  c++  java
  • Oracle 数据库添加定时事件

    程序设计中可能会碰到想要定时执行某段操作的情况,例如:

        每月清空某张表的数据;

        每年重新提取一次某张表的数据等。

    这种情况可以通过设置数据库的定时任务来实现,步骤如下:

    (1)首先检查数据库进程数 为0标识不运行job

        show parameter Job_queue_processes        //检查进程数语句 (命令窗口执行)
                如果value的值是0,那么执行如下命令:
            alter system set job_queue_processes=10 scope=both    //设置进程数

    (2)创建存储过程(要定时执行的操作)

    CREATE OR REPLACE PROCEDURE PAK_YCSY_UPDATE (nian varchar2)
    
                       IS
    
                       BEGIN
    
                             delete from YCSY_JSGZYF where DBND=nian;
    
                             insert into YCSY_JSGZYF select JSLB,DBMJ,nian,SEQ from YCSY_JSGZYF where YCSY_JSGZYF.DBND=to_number(nian)-1;
    
                                commit;
    
                       exception
    
                           when others then
    
                     rollback;
    
                       END ;

    (3)制定定时任务

                      var job_num number;
    
                       begin
    
                                dbms_job.submit(:job_num,'PAK_YCSY_UPDATE (substr(sysdate,1,4));',SYSDATE,'TRUNC(LAST_DAY(SYSDATE))+1+2/24');
    
                       end;
    
                       /
    
     
    
                       PAK_YCSY_UPDATE (substr(sysdate,1,4));      :调用存储过程
    
                       TRUNC(LAST_DAY(SYSDATE))+1+2/24              :触发间隔时间
    
                                ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24                每年1月1日1点
    
                                ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24                  每年7月1日和1月1日凌晨1点
    
                                TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24                         每季度的第一天凌晨1点执行
    
                                TRUNC(LAST_DAY(SYSDATE))+1+1/24                                 每月1日凌晨1点执行
    
                                TRUNC(next_day(sysdate,'星期一'))+1/24                       每周一凌晨1点执行
    
                                TRUNC(sysdate+ 1)  +1/ (24)                                     每天定时执行
    
                                TRUNC(sysdate,'hh') + 1/ (24)                                      每小时执行
    
                                TRUNC(sysdate,'mi') + 1/ (24*60)                     每分钟执行
    
     

                       注意:执行完成后提交。

    (4)查看定时任务

    select*from dba_jobs

    (5)删除定时任务      

     exec dbms_job.remove(24);             //括号中为任务编号
  • 相关阅读:
    并发编程(2)-进程、并发和并行讲解
    并发编程(5)-管道、数据共享、进程池
    并发编程(4)-进程中的锁、信号量、 事件和队列
    人工智能及数学运算的基础方法
    并发编程(3)-进程模块
    判断一个数是否是水仙花数
    js中隐式类型转换测试
    webpack使用webpack-dev-middleware进行热重载
    网页打包安卓APP流程
    「postgres」查看数据库连接数
  • 原文地址:https://www.cnblogs.com/yang-blogs/p/9724685.html
Copyright © 2011-2022 走看看