ORACLE中表死鎖的處理

2021-06-08 04:14:36 字數 1721 閱讀 1475

oracle中表死鎖的處理

在進行資料庫管理的過程中,經常會出現資料表被使用者的一些不合理操作而導致表被鎖定的情況,以下主要介紹如何查詢哪些表被哪個使用者所鎖定,以及如何解除鎖定:  

1.查詢被鎖定的表:  

如果想知道具體是哪個程序阻塞了哪個程序,可用以下語句檢視:

select

username,v$lock.sid,trunc(id1/power(2,16)) rbs,bitand(id1,to_number('ffff','***x'))+0 slot,id2 seq,lmode,request from v$lock, v$session where v$lock.type = 'tx' and v$lock.sid = v$session.sid and v$session.username = 'center' ;或

select

(select username||':'||sid||':'||serial# from v$session where sid=a.sid) ||

' 阻塞了 ' ||

2.確定鎖定表使用者的sid與serial編號(可通過oracle使用者確定也可通過系統使用者確定)

a.通過oracle使用者確定

b.通過系統使用者確定

3.殺掉造成死鎖的程序(已知是123阻塞了124號程序,殺掉即可解鎖)

至此表死鎖解除,現在存在的是資料表正常的鎖定,等事務提交後自然消失.

Oracle 死鎖處理

鎖機制是oracle用來滿足隔離性,一致性的重要機制。但是不合理的業務邏輯可能導致死鎖的產生,生產環境如果發生大量死鎖,可能對業務造成很大的影響,所以必須及時處理。通過 dba blockers 檢視,可以查到死鎖的程序。我這裡由於是 19c 所以多了一列 con id 表示哪個 pdb。通過以下 ...

Oracle 死鎖處理

一 資料庫死鎖的現象 程式在執行的過程中,點選確定或儲存按鈕,程式沒有響應,也沒有出現報錯。二 死鎖的原理 當對於資料庫某個表的某一列做更新或刪除等操作,執行完畢後該條語句不提 交,另一條對於這一列資料做更新操作的語句在執行的時候就會處於等待狀態,此時的現象是這條語句一直在執行,但一直沒有執行成功,...

oracle死鎖處理方法

招數一 1.檢視被鎖的表 2.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 ...