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