Top/Oracle/DBがロックした場合の対応

Oracle/DBがロックした場合の対応

データベースがロックした場合の処置

データベースがロックした場合、ロックを引き起こした犯人であるセッションを切断することで、データベース自体を再起動しなくても復旧できる場合が多いです。

セッション切断の方法

  1. SQL*PLUSで、該当のデータベースに接続します。
    ALTER SYSTEM権限が必要なので、「system/manager」ユーザでログインします。
  2. V$LOCKデータディクショナリから、ロックしているセッションを突き止めます。
    SELECT SID,TYPE,LMODE,REQUEST,CTIME 
    FROM V$LOCK 
    WHERE TYPE IN ('TX','TM')
    ;
    (実行結果)
           SID TY      LMODE    REQUEST      CTIME
    ---------- -- ---------- ---------- ----------
           140 TX          6          0      17573
           140 TM          3          0      17568
           140 TM          3          0      17573
    SIDはセッションID、CTIMEはロック時間(秒)を示します。
  3. 次に、V$SESSIONデータディクショナリから、ロックしているセッションのシリアルNo.を突き止めます。
    SELECT SADDR,SID,SERIAL#,USERNAME,PROGRAM 
    FROM V$SESSION 
    WHERE SID = ANY(SELECT SID FROM V$LOCK WHERE TYPE IN ('TX','TM'))
    ;
    (実行結果)
    SADDR           SID    SERIAL# USERNAME
    -------- ---------- ---------- ------------------------------
    PROGRAM
    ----------------------------------------------------------------
    37DBA190        140       5688 SMS
    JDBC Thin Client
  4. 最後に、ALTER SYSTEM KILLコマンドで、ロックしているセッションを切断します。
    (基本文法)
    ALTER SYSTEM KILL SESSION 'sid,serial#'
    (例)
    ALTER SYSTEM KILL SESSION '140,5688';
    (実行結果)
    SQL> ALTER SYSTEM KILL SESSION '140,5688';
    
    システムが変更されました。
このページを共有:
  • このページをはてなブックマークに追加 このページを含むはてなブックマーク
  • このページをlivedoor クリップに追加 このページを含むlivedoor クリップ
  • このページをYahoo!ブックマークに追加
  • このページを@niftyクリップに追加
  • このページをdel.icio.usに追加
  • このページをGoogleブックマークに追加

このページのURL:

ページ新規作成

新しいページはこちらから投稿できます。

TOP