Symptoms
今天接到客戶電話,客戶表示數據庫中的job next_date小於sysdate
select * from all_jobs where what next_date < sysdate;
使用上述語句查詢得出5條結果,也就是說這5個job都沒有執行成功,最早的一個next_date爲7月2號
Cause
由於一般job不執行很大一部分原因是數據庫CJQ0進程異常,於是就查看了一下這個進程
ps -ef|grep ora_cjq0,沒有查到對應的進程
很明顯的確是CJQ0出了問題。不過客戶每晚都會關閉應用和數據庫做冷備份,怎麼會啓動數據庫的時候沒有帶起來CJQ0進程呢?
查看了一下數據庫alert日誌,發現今天凌晨的備份數據庫沒有關閉成功
Active call for process 14837 user 'oracle' program
SHUTDOWN: waiting for active calls to complete.
查了一下進程14837,該進程是7月1號生成的。job在2號沒有執行成功。很明顯2號凌晨的數據庫備份應該也是有問題的
查看2號alert日誌,發現同樣在關閉數據庫時被14837進程阻塞。
Solution
1、關閉應用
2、kill -9 14837
3、手動重啓數據庫
4、啓動應用
以下鏈接是eygle大師關於數據庫job未能正常執行的一次案例,供大家參考
http://www.eygle.com/archives/2004/11/job_can_not_execute_auto.html