Oracleでデッドロックを削除する方法
本論文の例は、Oracleがデッドロックプロセスを削除する方法を説明する。皆さんの参考にしてください。具体的には以下の通りです
ステップ1:以下のSQLでプロセスリストを調べ、ロックされたテーブルを判断する。
ステップ2削除プロセスは、以前の「削除番号」のように検索された結果が「286,2184」である場合、以下のSQLが実行される。
ここで述べたように、みんなのOracleプログラムの設計に役に立ちます。
ステップ1:以下のSQLでプロセスリストを調べ、ロックされたテーブルを判断する。
SELECT dob.OBJECT_NAME Table_Name,lo.SESSION_ID||', '||vss.SERIAL# ,
lo.locked_mode,lo.SESSION_ID, vss.SERIAL#,vss.action Action,vss.osuser OSUSER, vss.LOGON_TIME,
vss.process AP_PID, VPS.SPID DB_PID ,vss.*
From v$locked_object lo, dba_objects dob, v$session vss, V$PROCESS VPS
Where lo.OBJECT_ID = dob.OBJECT_ID
and lo.SESSION_ID = vss.SID
AND VSS.paddr = VPS.addr
order by 2,3,DOB.object_name
ロックされたテーブルを検索ステップ2削除プロセスは、以前の「削除番号」のように検索された結果が「286,2184」である場合、以下のSQLが実行される。
ALTER system kill session '286, 2184'
削除後はすぐには効果が現れません。しばらくしてください。ここで述べたように、みんなのOracleプログラムの設計に役に立ちます。