oracle job之存儲過程處理的奧秘
Oracle提供的一個定期執行某個存儲過程或者包體的功能。需在oracle job中設定執行的開始時間、間隔時間、執行對象。關于Oracle Job的處理原理是怎樣的呢?它的執行過程到底有著怎樣的奧秘,接下來我們就來介紹這些。首先執行下面的代碼:
- exec dbms_job.broken(23,false);
- commit;
- select t.*, t.rowid from dba_jobs t;
- select t.*, t.rowid from sys.user_jobs t;
- select job, last_date, next_date, broken, interval, failures
- from user_jobs;
當一個oracle job運行時返回一個error時,oracle會再次設法執行它,***次嘗試是在一分鐘后,第二次是在2分鐘后,第三次是4分鐘后,以此類推。每次嘗試的周期加倍,直到下一次的運行時刻來到,又再次嘗試,當嘗試執行失敗16次時,oracle自動標示此job為broken,不再執行此任務。
注意:當一個job的執行周期是3分鐘執行一次,而你設參數job_queue_interval=600(10分鐘),而你只有一個SNP進程的話,你的這個JOB將10分鐘執行一次,失敗16次后將標示為broken。因為你的job的執行周期被SNP進程的喚醒周期限制。那么每次嘗試的時間間隔成倍的情況不會出現。
- select job, last_date, next_date, broken, interval, failures from user_jobs;
看看結果是什么?
如果failures中job的失敗次數,如果超過15次job就停止了。
broken顯示Y,則job不可用了。
是16次運行不成功,JOB就會自動停掉。
關于Oracle Job的知識就介紹這些,更多Oracle的學習請到:http://database.51cto.com/oracle/,謝謝大家的支持!
【編輯推薦】
- 虛擬機上Oracle 10g DataGuard的配置
- 揭開功能強大的數據庫表DUAL的神秘面紗
- 在存儲過程中連接遠程Oracle數據庫并進行操作
- 淺析Windows通過ODBC訪問linux的Oracle數據庫
- Oracle數據庫:全局索引的ONLINE重建要影響執行速度