Oracle/DBがロックした場合の対応 のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Oracle/DBがロックした場合の対応 へ行く。
- 1 (2005-12-22 (木) 18:31:11)
- 2 (2006-01-24 (火) 20:41:44)
データベースがロックした場合の処置 †
データベースがロックした場合、ロックを引き起こした犯人であるセッションを切断することで、データベース自体を再起動しなくても復旧できる場合が多いです。
セッション切断の方法 †
- SQL*PLUSで、該当のデータベースに接続します。
ALTER SYSTEM権限が必要なので、「system/manager」ユーザでログインします。 - 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はロック時間(秒)を示します。
- 次に、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
- 最後に、ALTER SYSTEM KILLコマンドで、ロックしているセッションを切断します。
(基本文法) ALTER SYSTEM KILL SESSION 'sid,serial#' (例) ALTER SYSTEM KILL SESSION '140,5688'; (実行結果) SQL> ALTER SYSTEM KILL SESSION '140,5688'; システムが変更されました。
コメント
#comment