oracle解決死鎖

2021-08-31 22:11:58 字數 511 閱讀 5624

--第一步:檢視是否有死鎖存在,查出有資料則代表有死鎖

select p.spid,c.object_name,b.session_id,b.oracle_username,b.os_user_name from v$process p,v$session a,v$locked_object b,all_objects c

where p.addr=a.paddr

and a.process=b.process

and c.object_id=b.object_id

--第二步:查出死鎖session的精確資訊【sid 為前面語句的session_id】

select sid, serial#, username, osuser from v$session where sid='第一步查詢出來的session_id';

--第三步:刪除死鎖【第乙個引數為sid,第二個為serial#】

alter system kill session '第乙個引數,第二個引數';

死鎖與解決死鎖

要是以後寫資料庫的產品,不是寫sql語句,那裡面涉及到的鎖就跟多了。故事裡有五個哲學家 這些哲學家很窮,只買得起五根筷子。他們坐成一圈,兩個人的中間放一根筷子。哲學家吃飯的時候必須同時得到左手邊和右手邊的筷子。如果他身邊的任何一位正在使用筷子,那他只有等著。假設哲學家的編號是a b c d e,筷子...

Windows Oracle解決死鎖

背景 執行某個查詢功能,無返回無報錯,再次請求時出現死鎖異常。導致後台和其他相關的後台服務無法對該錶進行任何操作。1 查詢導致死鎖的session和object name 被鎖死的表 select l.session id,o.owner,o.object name from v locked ob...

解決死鎖問題

之前的例子 只是測試 只是為了說明原理,例子本身很簡單,所以有一些考慮不周的地方。比如當獲取到鎖之後在業務操作執行過程中發生了環境問題導致斷開了和redis的連線,那就無法在finally塊中釋放鎖,導致其他等待獲取鎖的執行緒無限等待下去,也就是發生了死鎖現象。解決方式 可以在redis中給鎖設定乙...