使用Oracle job定時執行存儲過程
Oracle job允許我們定制任務的執行時間,并提供了靈活的處理方式,還可以通過配置,安排任務在系統用戶訪問量少的時段內執行,極大地提高了工作效率。例如,對于數據庫日常的備份、更新、刪除和復制等耗時長、重復性強的工作,我們就可以利用Oracle job去自動執行以減少工作量。 本文以一個問題來介紹這一功能的使用。
問題:假設有一個存儲過程p_test,如何才能每20分鐘執行一次?
解答:
1、把init.ora中如下兩個參數打開。
- JOB_QUEUE_INTERVAL=60
- JOB_QUEUE_PROCESSES=4
- job_queue_keep_connections=true
然后重啟一個庫,如果原來已經打開了則不用這步了。
2、示例,以下由sqlplus 來執行,具體參照一下相關的文檔。
- VARIABLE jobno number;
- BEGIN
- DBMS_JOB.SUBMIT(:jobno,
- ’p_test;’
- SYSDATE,’SYSDATE + 1/72’);
- commit;
- END;
- DBMS_JOB.SUBMIT(:jobno,//job號
- ’your_procedure;’,//要執行的過程
- trunc(sysdate)+1/24,//下次執行時間
- ’trunc(sysdate)+1/24+1’//每次間隔時間
- );
刪除job:dbms_job.remove(jobno);
修改job:dbms_job.what(jobno,what);
修改下次執行時間:dbms_job.next_date(job,next_date);
修改間隔時間:dbms_job.interval(job,interval);
停止job:dbms.broken(job,broken,nextdate);
啟動job:dbms_job.run(jobno);
例子:
- VARIABLE jobno number;
- begin
- DBMS_JOB.SUBMIT(:jobno,
- ’Procdemo;’,
- SYSDATE, ’SYSDATE + 1/720’);
- commit;
- end;
本文就介紹到這里,歡迎大家批評指導!
【編輯推薦】