REDOメンバーが破損・消失
REDOログファイル2メンバーの多重構成で運用中に、あるグループの1メンバーが
消失したケースを想定した、リカバリの流れを解説する。
(このリカバリ手順は、健在なメンバーが残存する時という条件付き。)
メンバー障害からのリカバリ
(1) アラートログを参照しエラー状態を確認
発生し得るエラーは、ログ順序番号が一致しないを示す ORA-00314 や、
付随して出力されるオンラインログやスレッド情報の ORA-00312 などがある。
※以後、アラートログを参照しつつ作業することをお勧めする。
Unix/Linux の場合、別ウィンドウで 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メンバー以上の構成は維持したい。