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