Oracle ロックしているセッションをkillする
insert文を実行かけた瞬間にSQL Plusが死んでしまった。む、テーブルロックしてる。
あー、どうやるんだっけ・・・・。私、急いでるんですけど。
ロックを解除するには、
- ロックしているセッションの特定
- セッションをkillする。
(解除って感じじゃないか・・・)
ロックしているセッションを特定するには、V$LOCK、V$SESSIONを参照する。
SELECT SID, SERIAL# FROM V$SESSION WHERE SID IN ( SELECT SID FROM V$LOCK WHERE TYPE IN ('TM','TX'));
select sid, SERIAL#, osuser, user, machine, to_char(logon_time, 'YYYY/MM/DD HH24:MI:SS') from v$session where .....
取得したSID, SERIAL#のセッションをkill
alter system kill session '<SID>,<SERIAL#>';
以下、実行例・・・
SQL> SELECT SID, SERIAL# FROM V$SESSION 2 WHERE SID IN ( 3 SELECT SID FROM V$LOCK 4 WHERE TYPE IN ('TM','TX') 5 ); SID SERIAL# ---------- ---------- 137 44166 154 8119 select sid, SERIAL#, osuser, user, machine, to_char(logon_time, 'YYYY/MM/DD HH24:MI:SS') from v$session where SERIAL# = 137; SQL> alter system kill session '154,8119'; システムが変更されました。