• 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);             //括号中为任务编号
  • 相关阅读:
    pyinstaller guid
    python filter()和map()函数
    python eval()
    day6
    repr()函数是什么鬼?
    fibonacci_question
    冒泡算法
    python 函数
    day4作业
    NOIp 2013 #1 积木大赛 Label:有趣的模拟
  • 原文地址:https://www.cnblogs.com/yang-blogs/p/9724685.html
Copyright © 2020-2023  润新知