ひょんなところでOracleのデットロックが発生(プログラムの組み方が悪い)
SQLで処理が輻輳してデットロックが発生。
確認・解除方法を調べたので記述しておく。
①確認
★確認用のSQL
SELECT SID, SERIAL# FROM V$SESSION
WHERE SID IN (SELECT SID FROM V$LOCK WHERE TYPE IN (‘TM’,’TX’));
②解除
☆解除用のSQL
確認用SQLの結果からプロセスIDとシリアル値を取得してそれぞれに代入する。
alter system kill session ‘sid, serial#’
例:SID→37 serial#→1639 と出た場合
alter system kill session ’37, 1639′;
で解除可能(データの整合性は自分で確認)
解除を行うにはDBAの権限が必要
上記内容はhttp://www.searchman.info/tips/1680.html を参照にさせていただきました。
ありがとうございます。