在運算元據庫中經常會遇到表死鎖問題,特別是不良的資料庫設計和操作的時候,更容易遇到死鎖問題。今天在系統中往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...