前のトピック: テーブルスペースのリストア次のトピック: トラブルシューティング


制御ファイルのリストア

データベース制御ファイルが失われるか破損したりした場合は、ファイル レベル復旧を実行してリストアできます。 ファイル レベル復旧が成功した後、手動で制御ファイルを回復する必要があります。

次の手順に従ってください:

  1. root ユーザとしてターゲット マシンにログインします。
  2. Oracle インスタンスをシャットダウンします。
    SQL>shutdown abort
    
  3. nomount 状態でデータベースを起動します。
    SQL>startup nomount
    
  4. すべての制御ファイルのパスをリスト表示します。
    SQL> show parameter control_files;
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    control_files                        string      /opt/oracle/oradata/lynx/control01.ctl, /opt/oracle/flash_recovery_area/lynx/control02.ctl
    
  5. リストア ウィザードを使用して、制御ファイルをリストアします。 リストア プロセスの詳細については、「Linux ノードでファイル レベル復旧を実行する方法」を参照してください。
  6. リストア ウィザードに関する以下の情報を指定し、ジョブをサブミットします。
    1. ファイルやフォルダを選択する場合は、制御ファイルの必要な名前を入力して検索します。 制御ファイルがすべて選択されるまで、この手順を繰り返します。

      例: 「control01.ctl」と入力して検索します。

    2. [ターゲット マシン]ページで、以下の情報を入力します。
      • [元の場所にリストアする]を選択します。
      • ターゲット Oracle サーバのホスト名または IP アドレスを入力します。
      • ターゲット Oracle サーバの root ユーザ名とパスワードを入力します。
      • [競合の解決]オプションの[既存ファイルを上書きする]を選択します。
  7. すべての制御ファイルがリストアされたら、データベースをマウントして開きます。
    $sqlplus / as sysdba
    SQL>alter database mount;
    
  8. RECOVER コマンドでデータベースを回復し、USING BACKUP CONTROLFILE 節を追加します。
    SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
    
  9. 指定されたアーカイブ済みログを適用します。

    注: 必要なアーカイブ ログがない場合は、必要な redo レコードがオンライン redo ログにあることを意味します。 これは、インスタンスが失敗すると、アーカイブされていない変更がオンライン ログに入れられるためです。 オンライン redo ログ ファイルのフル パスを指定し、Enter キーを押します(正しいログが見つかるまで、数回の試行が必要な場合があります)。

    例:

    SQL> RECOVER DATABASE USING BACKUP CONTROLFILE 
    ORA-00279: change 1035184 generated at 05/27/2014 18:12:49 needed for thread 1
    ORA-00289: suggestion :
    /opt/oracle/flash_recovery_area/LYNX/archivelog/2014_05_27/o1_mf_1_6_%u_.arc
    ORA-00280: change 1035184 for thread 1 is in sequence #6
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    /opt/oracle/oradata/lynx/redo03.log
    ログが適用されます。
    メディア リカバリが完了します。
    
  10. リカバリ プロセスの完了後に、RESETLOGS 節が含まれるデータベースを開きます。
    SQL>alter database open resetlogs;
    

制御ファイルが正常に回復されます。