Oracle ロックしているセッションをkillする

insert文を実行かけた瞬間にSQL Plusが死んでしまった。む、テーブルロックしてる。
あー、どうやるんだっけ・・・・。私、急いでるんですけど。

ロックを解除するには、

  1. ロックしているセッションの特定
  2. セッションを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';

システムが変更されました。