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資料庫了。
資料庫死鎖解決方案
一 活鎖 如果事務t1封鎖了資料r,事務t2又請求封鎖r,於是t2等待。t3也請求封鎖r,當t1釋放了r上的封鎖之後系統首先批准了t3的請求,t2仍然等待。然後t4又請求封鎖r,當t3釋放了r上的封鎖之後系統又批准了t4的請求,t2有可能永遠等待,這就是活鎖的情形。避免活鎖的簡單方法是採用先來先服務...
死鎖及其解決方案(避免 預防 檢測)
所謂死鎖 是指兩個或兩個以上的程序在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖 死鎖產生的原因?1.因競爭資源發生死鎖 現象 系統中供多個程序共享的資源的數目不足以滿足全部程序的需要時,就會引起對諸資源的競爭而發生死鎖現象 2.程序推進順...
sql server死鎖解決方案 和 清除快取
死鎖解決方案 問題場景 在客戶那碰到乙個操作卡死的現象 問題解決 1 如何掛鉤是死鎖問題 通過 跟蹤,發現是指執行乙個sql語句超時,因此猜想可能是表鎖住了 select request session id spid,object name resource associated entity i...