oracle檢視死鎖和處理方法

2021-06-18 06:11:54 字數 984 閱讀 9921

在運算元據庫中經常會遇到表死鎖問題,特別是不良的資料庫設計和操作的時候,更容易遇到死鎖問題。今天在系統中往oracle中新增資料時,特意快速多點幾次新增的時候,就出現了死鎖問題,而且剛好在讀取和更新表的主鍵值時出現死鎖。今天先不談如何設計不出現死鎖問題,只是記錄一下如何通過sql語句查詢和解決死鎖問題。

檢視被鎖住的表

select b.owner,b.object_name,a.session_id,a.locked_mode

from v$locked_object a,dba_objects b

where b.object_id = a.object_id

檢視被鎖住的時間

select b.username,b.sid,b.serial#,logon_time

from v$locked_object a,v$session b

where a.session_id = b.sid order by b.logon_time

查詢死鎖的sql語句

select sql_text from v$sql where hash_value in

(select sql_hash_value from v$session where sid in

(select session_id from v$locked_object))

查詢被鎖住的程序

select username,lockwait,status,machine,program from v$session where sid in

(select session_id from v$locked_object)

處理掉死鎖的程序

alter system kill session 『sid,serial#』;

Oracle檢視死鎖

檢視有哪些表被鎖住 select b.owner,b.object name,a.session id,a.locked mode from v locked object a,dba objects b where b.object id a.object id select b.username...

檢視死鎖p lockinfo

set quoted identifier on go set ansi nulls on go exec proc p lockinfo 0,0 alter proc p lockinfo kill lock spid bit 1,是否殺掉死鎖的程序,1 殺掉,0 僅顯示 show spid if...

GDB 檢視死鎖

死鎖 一種情形,此時執行程式中兩個或多個執行緒發生永久堵塞 等待 每個執行緒都在等待被 其他執行緒占用並堵塞了的資源。例如,如果執行緒a鎖住了記錄1並等待記錄2,而執行緒b鎖住了記錄2並等待記錄1,這樣兩個執行緒就發生了死鎖現象。gdb除錯死鎖的方法 gdb attach pid 找到 lll lo...