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);             //括號中爲任務編號
相關文章
相關標籤/搜索