Oracle復旧

仮復旧:ORA-01261 からの ORA-12514 - think it over

  • ディスク復旧したよ!
  • やっぱりデータは無くなったよ!

との連絡を受け、Oracleの復旧、本番。

REDOログの復旧

仮復旧で強引に初期化パラメータからREDOログ多重化設定の一部(db_create_online_log_dest_3)を削除してしまったため、

ORA-00313: ログ・グループ4(スレッド1)のメンバーをオープンできません。

なエラーが出ている状態に。

まずはエラー解消するため、全てのロググループから、障害のあったディスクにあったメンバーを削除。

SQL> ALTER DATABASE DROP LOGFILE MEMBER 'E:\path\to\XXXX.LOG';

途中で

ORA-01609: ログ3はスレッド1の現在のログです - メンバーは削除できません

が発生した場合は、

SQL> ALTER SYSTEM SWITCH LOGFILE;

ログをswitchしてから再実行。

SQL> SELECT * FROM V$LOGFILE;

で削除した対象のログが本当に消えたかを確認。


で、復旧したディスク上にもともとのパス(E:\path\to\)を作っておき、

SQL> ALTER DATABASE ADD LOGFILE MEMBER 'E:\path\to\XXXX.LOG' TO GROUP 1;

でREDOログを再追加。

なお、初期構築時にOMFで設定した場合、もとの「_MF_」が含まれているファイル名で追加しようとすると、

ORA-01276:
ファイルE:\path\to\XX_MF_XXXX.LOGは追加できません。ファイルにOracle Managed Filesのファイル名があります。

と怒られる。「_MF_」が出現しなければ問題なく追加できる。

SQL> SELECT * FROM V$LOGFILE;

で追加した対象のログが本当に追加されたかを確認。
「INVALID」になっていたらログをswitchすればOK。


制御ファイルの復旧

C, Dドライブに残っていた制御ファイルを元のファイル名で、Eドライブにコピー。

削除した初期化パラメータの復旧

バックアップしてあったSPFILEを元に戻す。

復旧確認とバックアップ

  • startupで問題なく起動したことを確認
  • アラートログにエラーが出ていないことを確認

で、OEMからフルバックアップ

げふー。