他のところにもあるんでしょうか。ごきげんよう。
OracleでSELECT ~ FOR UPDATEのロックを強制解除する方法
(1) セッションを削除する
SELECT SID, SERIAL#, PROGRAM, TERMINAL, OSUSER, STATUS FROM V$SESSION
WHERE SID = ANY(SELECT SID FROM V$LOCK WHERE TYPE IN ('TX', 'TM'));
↓SIDとSERIAL#を以下のSQLに代入して実行
ALTER SYSTEM KILL SESSION 'SID, SERIAL#';
↓ORA-01031: 権限が不足しています。 ※要dba権限
ガッデム!
(2) セッションのプロセスを強制終了する
SELECT S.SID, S.SERIAL#, P.SPID, S.PROGRAM, S.TERMINAL, S.OSUSER, S.STATUS
FROM V$PROCESS P, V$SESSION S WHERE P.ADDR = S.PADDR;
↓サーバーOSでSPIDを以下のコマンドに代入して実行
>TASKKILL /PID SPID
↓プロセス "SPID" が見つかりませんでした。
Shit!!!
(3) ORAKILLコマンドでプロセスを終了する
SELECT S.SID, S.SERIAL#, P.SPID, S.PROGRAM, S.TERMINAL, S.OSUSER, S.STATUS
FROM V$PROCESS P, V$SESSION S WHERE P.ADDR = S.PADDR;
↓サーバーOSでSPIDを以下のコマンドに代入して実行
>ORAKILL ORCL SPID
↓Kill of thread id SPID in instance ORCL successfully signalled.
…あれ? successfullyって出たのにセッション消えてない…。
↓
シグナル送信してから実際にkillされるまで少し待つ
やっとできた…。
0 件のコメント: