REDOログのメンバー障害からのリカバリ方法

REDOログファイル2メンバーの多重構成で運用中に、あるグループの1メンバーが
消失したケースを想定した、リカバリの流れを解説する。
(このリカバリ手順は、健在なメンバーが存在する時という条件付き。)


メンバー障害からのリカバリ

(1) アラートログを参照しエラー状態を確認

発生し得るエラーは、ORA-00314、ORA-00312 などがある。

※以後、別ウィンドウで tail -f コマンドでアラートログを
参照しつつ作業することをお勧めする。
 

(2) データベースの接続確認

sqlplus / as sysdba

 

(3) REDOログファイルのステータス確認

SQL> select * from v$logfile;

障害時には、対象メンバーのステータスが INVALID となっている。
 

(4) カレントロググループの確認

このメンバーが属するグループが CURRENT の場合は実行できないので、
その場合は手動でログスイッチして INACTIVE の状態になることを確認する。

SQL> select * from v$log;

※ 手動ログスイッチする場合

SQL> alter system switch logfile;


 

(5) 消失したメンバーを論理削除

SQL> alter database drop logfile member '対象のREDOログ(フルパス)';

内部的に論理削除される。
 

(6) メンバーの再構成

SQL> alter database add logfile member '再構成するREDOログ(フルパス)'
reuse to group <グループ番号>;

復旧したいファイル(論理削除したファイル名をフルパスで指定)と、
リカバリに使うグループ番号を指定する。
 

(7) 手動ログスイッチする

SQL> alter system switch logfile;

即時反映はされないので、リカバリしたグループまでログスイッチで循環させ、
再構成したメンバーを正しく認識させる。
 

(8) REDO ログファイルのステータス確認

SQL> select * from v$logfile;

対象メンバーのステータスが INACTIVE から NULL に変わっていること。
 

(9) インスタンス再起動

必須ではないが念のため、再起動して問題ないことを確認する。
アラートログもあわせて参照すること。

SQL> shutdown immediate

※ コールドバックアップもこのタイミングで取得したほうがよい。

% sqlplus / as sysdba
SQL> startup

以上でリカバリが完了。グループ全損でなければ、データベースは正常に稼働
し続けるが、耐障害性のために3グループ2メンバー以上の構成は維持したい。

関連記事

人気ブログランキングへ

このページの先頭へ