在oracle中,可以利用select語句查詢死鎖,該語句用于數據簡單查詢,語法為“select * from v$Session where sid in(select session_id from v$locked_object)”。
本教程操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。
oracle怎樣查詢死鎖
1、查看死鎖
1)用dba用戶執行以下語句
select?username,lockwait,status,machine,program?from?v$session?where?sid?in (select?session_id?from?v$locked_object)
如果有輸出的結果,則說明有死鎖,且能看到死鎖的機器是哪一臺。字段說明:
-
Username:死鎖語句所用的數據庫用戶;
-
Lockwait:死鎖的狀態,如果有內容表示被死鎖。
-
Status: 狀態,active表示被死鎖
-
Machine: 死鎖語句所在的機器。
-
Program: 產生死鎖的語句主要來自哪個應用程序
2)用dba用戶執行以下語句,可以查看到被死鎖的語句。
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))
2、死鎖的解決方法
1)查找死鎖的進程:
SELECT?s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#, l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS FROM?V$LOCKED_OBJECT?l,V$SESSION?S?WHERE?l.SESSION_ID=S.SID;
2)kill掉這個死鎖的進程:alter system kill session ‘sid,serial#’; (其中sid=l.session_id)
推薦教程:《Oracle視頻教程》
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦