Oracle 数据库添加定时事件

程序设计中可能会碰到想要定时执行某段操做的状况,例如:数据库

    每个月清空某张表的数据;spa

    每一年从新提取一次某张表的数据等。设计

这种状况能够经过设置数据库的定时任务来实现,步骤以下:code

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

    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)制定定时任务rem

                  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)                     每分钟执行

 

                   注意:执行完成后提交。it

(4)查看定时任务io

select*from dba_jobs

(5)删除定时任务      程序设计

 exec dbms_job.remove(24);             //括号中为任务编号
相关文章
相关标签/搜索