Oracle Job 死鎖解決方案

    Oracle執行定時JOB時,經常會遇到JOB意外死鎖,或者一些JOB執行的程序有對外的接口,當網絡中斷或不穩定時,造成JOB死鎖,佔用資源,以下爲解決方法:

(如果不想JOB釋放後馬上又重新執行,請先將JOB在數據庫中Broken)

1.查看正在執行JOB的Job Id、SID、Serial#、SPID信息:

select c.JOB, b.sid, b.SERIAL#, spid
  from v$process a, v$session b, dba_jobs_running c
 where a.addr = b.paddr
   and b.sid = c.sid


2.嘗試使用以下語句SID、Serial#停止JOB進程:

alter system kill session '646,3312';

(其中'646,3312'分別就是上面查出的SID和Serial#)

 

3.如通過以上還是無法解決問題,繼續按以下步驟執行:

  (1)、首先通過1查詢的JOB ID將死鎖的JOB Broken掉;

  (2)、用Root權限進入Linux後臺,用kill -9 29202 終止JOB進程(29202爲1查詢出得SPID);

  (3)、在數據庫恢復正常後,在啓用JOB。

 

以上第1步最好在第2步無效的情況下使用,因直接終止進程可能會造成Oracle或操作系統不穩定或直接崩潰,另外如果還是無法解決以上問題,則只能重啓Oracle數據庫了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章