Oracle データベースを復元する

管理コンソールを使用してデータベースを復元する

元のデータベースに復元すると、元の本番環境アプリケーション データが指定された特定の時点のイメージに置き換えられます。この復元により、アプリケーションがイメージの作成時点の状態に復元されるため、現在のアプリケーション データはすべて失われます。この操作は元に戻せません。復元オペレーションの完了に必要な時間は、関連するデータ量によって異なります。データベースを別のターゲットに復元することもできます。

次の手順に沿って、管理コンソールから RMAN を使用して Oracle データベースを自動的に復元し、元の本番環境データベースを上書きします。

  1. 管理コンソールで App Manager を開き、データベース アプリケーション名を入力するか、フィルタを使用して必要なデータベース イメージを見つけます。

  2. アプリケーションを右クリックして、[アクセス] を選択します。

  3. [アクセス] ページで、イメージを選択し、[マウント] メニューの [復元] をクリックします。

  4. [復元] ページで、[従来](マウントと移行ではない)を選択します。

  5. [Restore Range] スライダーを使用して、データベースを復元する特定の時点を選択します。ログが適用されていないデータベースだけを復元するには、スライダー ツールを一番左まで動かします。

  6. [Username] に、選択したターゲット サーバーの Oracle ソフトウェア オーナーを入力します。

  7. [チャネル数] で、データベース復元の並列処理を構成する RMAN チャネルの数を指定します。

  8. [送信] をクリックします。

  9. 警告ダイアログが表示されます。内容を読んでから、[DATA LOSS] と入力して確定します。

  10. ジョブは、次に使用可能なジョブスロットのキューに入れられます。進行状況は [ジョブ モニター] で確認できます。

管理コンソールを使用してデータベースを任意のターゲットに復元する

管理コンソールから RMAN を使用して、Oracle データベースを新しいターゲットに復元するには、次の操作を行います。

  1. [App Manager] > [Applications] のリストで、データベースを右クリックして [Access] を選択します。
  2. 復元するバックアップ イメージを選択して、[Restore] を選択します。
  3. [復元] ページで、[従来] を選択します。

    • ターゲット: すべての構成で、対象となるすべての Oracle データベース サーバーをプルダウンから選択できます。プルダウンから復元先のターゲット サーバーを選択します。
    • 元のアプリケーション ID を置き換える: このオプションは、バックアップが元々生成された同じアプライアンス上の新しいサーバーに復元する場合にのみ使用できます。
    • はい: 元のアプリケーションを置き換え、元のアプリケーションと同じアプリケーション ID、ジョブ履歴、バックアップ イメージ、バックアップ プランを使用します。
    • No: 元のアプリケーションは置き換えられません。新しいデータベースは、復元ジョブの一環として新しいアプリケーションとして検出されます。
    • ロールフォワード時間: ログで保護されているデータベースを必要な時点に復元する日時を選択します。
    • [Application Options]:

      • DATABASESID: 保護されたデータベースの SID 名が事前入力されており、変更できません。
      • ユーザー名: ソース データベースの Oracle ソフトウェアの所有者が事前に入力されています。選択したターゲット サーバーの Oracle ソフトウェアの所有者が異なる場合は、USERNAME を更新します。
      • ORAHOME: これは、移行元データベースの Oracle Home パスで事前入力されます。選択したターゲット サーバーで Oracle ホームが異なる場合は、Oracle ホーム ディレクトリを更新します。
      • 詳細オプション: 事前入力され、バックアップ時のソースのすべてのデータベース パラメータ設定(pfile から)が表示されます。復元先のターゲット データベース サーバー(ソースまたは新しいターゲット)のパラメータ値が正しいことを確認します。
  4. マッピング オプション:

    • Target Database Type: プルダウン リストから、データベースのデータベース ターゲット タイプ(ASM ディスク グループまたはファイル システム)を選択します。ASM 形式のバックアップ イメージでは、ファイル システムのターゲット タイプはサポートされていません。

      ソース データベース 代替画像の形式 復元ターゲット
      ASM ASM ASM
      ASM ファイル システム ASM
      ファイル システム ファイル システム ファイル システム
    • プルダウン リストから、3 つのファイルタイプ(データベースのデータファイル、制御ファイル、REDO ファイル)のターゲット ASM ディスク グループとファイル システムのマッピングを選択します。

  5. [フライト前のチェック] をクリックします。プリフライト チェックが失敗した場合は、問題を修正してプリフライト チェックを再度実行します。

  6. [送信] をクリックして復元ジョブを送信します。

RMAN を使用して Oracle データベースを手動で復元する

Oracle データベースを手動で復元するには、次の手順をご覧ください。

非 RAC、非 ASM、ファイル システム

ファイル システムにデータファイルがあり、ファイルベースのステージング ディスク形式で保護されている Oracle データベースを復元する

  1. 保護されたソース データベースからイメージをマウントします。

    [マウント] ウィンドウの [マッピング オプション] で、イメージのマウント ポイント(例: /acttestdb)を指定します。データベース イメージをマウントする手順については、データ アクセス用にファイル システムで保護された Oracle データベース イメージをマウントするをご覧ください。

    データベース バックアップ イメージは /acttestdb にマウントされます。

    保護されたアーカイブ ログは /acttestdb_Log にマウントされます。

  2. Oracle 環境を設定し、sqlplus を使用してデータベースをシャットダウンします。

    sqlplus / as sysdba
    sql> shutdown immediate;
    

    データベースがシャットダウンされていることを確認します。データベースの残りのプロセスをすべて終了します。

    ps -ef | grep database sid
    
  3. マウントされたボリュームのバックアップ パラメータ ファイルを使用して、データベースを nomount 状態で起動します。バックアップ パラメータ ファイルは、トップ マウント フォルダ(/acttestdb など)の下にあります。

  4. Oracle 環境を設定し、sqlplus を使用してデータベースを起動します。

    sqlplus / as sysdba
    sql> startup nomount pfile='/acttestdb/database sid___backup.ora';
    
  5. 既存の pfile から新しい spfile を作成し、データベースを再起動します。

    pfile から spfile を作成します。

    create spfile='$ORACLE_HOME/dbs/spfile_database sid.ora' from pfile='/acttestdb/database sid___backup.ora';
    

    nomount 状態で spfile を使用してデータベースを再起動します。

    shutdown immediate;
    startup nomount;
    
  6. Backup and DR のマウントされたアーカイブ ログ イメージから RMAN を使用して制御ファイルを復元します。ログマウント イメージの最新の制御ファイルを使用します。例:

    /acttestdb_Log/cf D_sid-id_Target SID.ctl
    

    または、ログ画像が複数ある場合:

    /acttestdb_Log_1/cf-D_sid-id_Target SID.ctl

       rman target /
       restore controlfile from '/acttestdb_Log_1/cf-D_<var>sid</var>-id_<var>id</var>.ctl' ;
    
  7. データベースをマウントします。

       alter database mount;
    
  8. バックアップと DR でマウントされたデータベース イメージとアーカイブログ イメージのデータファイルとアーカイブログ フォルダを RMAN にカタログします。

       run {
         catalog start with '+acttestdg/db_name/datafile' noprompt;
         catalog start with '+acttestdg/db_namearchivelog' noprompt;
         catalog start with 'mountpoint_log' noprompt;
         }
    
  9. データベースを復元して復旧します。

      run { restore database ; recover database; }
    

    特定の時点の復元(形式: yyyymmddhh24mi):

       run
        {
        restore database;
        recover database until time "to_date('timestamp','yyyymmddhh24mi')";
        }
    
  10. リセット ログ オプションを使用してデータベースを開きます。

    • プライマリ データベースの復元の場合:

      alter database open resetlogs;
      
    • Data Guard スタンバイ データベースの復元では、Data Guard 管理復元プロセスを開始します。

      alter database recover managed standby database nodelay disconnect;
      

    データベースは読み取りと書き込みに使用できます。

RAC またはスタンドアロン ASM、ファイル システム

ASM ディスク グループにデータファイルがあり、ファイルベースのステージング ディスク形式で保護されている Oracle データベースを復元する

  1. 保護されたソース データベースからイメージをマウントします。

    [Mapping Options] の [Mount] ウィンドウで、イメージのマウント ポイント(例: /acttestdb)を指定します。データベース イメージをマウントする手順については、データ アクセス用のファイル システムで保護された Oracle Database イメージをマウントするをご覧ください。

    データベース バックアップ イメージは、マウント場所 /acttestdb にマウントされます。

    保護されたアーカイブ ログは /acttestdb_Log にマウントされます。

  2. Oracle データベースをシャットダウンします。ノード 1 から Oracle OS ユーザーに su します。

    su - oracle

    Oracle 環境を設定し、srvctl を使用してすべてのノードでデータベースを停止します。

    srvctl stop database -d <var>database_name</var>

    データベースがシャットダウンされていることを確認します(すべてのノード)。データベースの残りのプロセスを終了します。

    ps -ef | grep <var>database_name</var>

  3. マウントされたボリュームのバックアップ パラメータ ファイルを使用して、データベースを no-mount 状態で起動します。バックアップ パラメータ ファイルは、最上位のマウント フォルダ(/acttestdb など)にあります。

  4. Oracle 環境を設定し、sqlplus を使用してデータベースを起動します。

    sqlplus / as sysdba
    startup nomount pfile='/acttestdb/<var>database_name</var>___backup.ora';
    
  5. 新しい spfile を作成して、データベースを再起動します。

    ディスク グループの元の spfile のパスを取得するには:

    cat $ORACLE_HOME/dbs/init{データベース SID}.ora

    例: spfile=+{優先ディスク グループ}/db_name/spfiledb_name.ora`

      create spfile='+{preferred disk group}/{db name}/spfile<var>db_name</var>.ora' from pfile='/acttestdb/<var>db_name</var>___backup.ora';
    

    nomount 状態で spfile を使用してデータベースを再起動します。

      shutdown immediate;
      startup nomount;
    
  6. Backup and DR のマウントされたアーカイブ ログ イメージから RMAN を使用して制御ファイルを復元します。ログマウント イメージの最新の制御ファイルを使用します。例:

    /acttestdb_Log/cf-D_<var>db_name</var>-id_<var>db_id</var>.ctl
    

    または、ログ画像が複数ある場合:

    /acttestdb_Log_1/cf-D_<var>db_name</var>-id_<var>db_id</var>.ctl
    
       target /
       restore controlfile from '/acttestdb_Log_1/cf-D_<var>db_name</var>-id_<var>db_id</var>.ctl' ;
       ```
    
  7. データベースをマウントします。

     alter database mount;
    
  8. バックアップと DR のマウントされたデータベース イメージとアーカイブログ イメージのデータファイルとアーカイブログ フォルダを RMAN にカタログします。

     run { catalog start with '/acttestdb/datafile' noprompt;
     catalog start with '/acttestdb/archivelog' noprompt;
     catalog start with '/acttestdb_Log' noprompt;}
    
  9. データベースを復元して復旧します。

     run { restore database ; recover database; }
    

    特定の時点の復元(形式: yyyymmddhh24mi):

     run
     {
     restore database;
     recover database until time "to_date('<var>timestamp</var>','yyyymmddhh24mi')";
     }
    
  10. リセット ログ オプションを使用してデータベースを開きます。

    • プライマリ データベースの復元の場合:
    alter database open resetlogs;
    

    RAC 構成では、ログのリセット後に別の手順が必要です。ノード 1 でデータベースをシャットダウンし、すべてのノードでデータベースを起動します。

    sqlplus を使用してデータベースをシャットダウンします。

      sqlplus / as sysdba
      shutdown immediate;
      ```
    Use srvctl to start the database across all nodes:
    
     ```srvctl
      srvctl start database -d <var>database_name</var>
      ```
    + For Data Guard standby database recovery:
    
      + For non-RAC config: Start the Data Guard managed recovery process
    
          ```rman
          alter database recover managed standby database nodelay disconnect;
          ```
    
      + For RAC config: Shut down the database on node 1 and start the
        database in mounted state across all nodes.
    
         1. Use sqlplus to shut down the database:
    
              ```sqlplus
              / as sysdba
              shutdown immediate;
              ```
    
         1. Use srvctl to start the database in a mount state across all
            nodes:
    
             ```srvctl
             srvctl start database -d <var>database_name</var> -o mount
             ```
    
         1. Start the Data Guard managed recovery process:
    
             ```rman
             alter database recover managed standby database nodelay disconnect;
             ```
    

データベースは読み取りと書き込みに使用できます。

RAC またはスタンドアロン ASM、ASM ディスク グループ

ASM ディスク グループにデータファイルがあり、ASM ディスク グループのステージング ディスク形式で保護されている Oracle データベースを復元する

  1. 保護されたソース データベースからイメージをマウントします。[マウント] ウィンドウで、RAC ノード 1 の ASM でイメージ マウントに使用する優先ディスク グループを指定します。データベース イメージのマウント方法の詳細については、データ アクセス用の ASM ディスク グループで保護された Oracle Database イメージのマウントをご覧ください。

    たとえば、マウント画面では次のようになります。

    • ホストを選択: RAC ノード 1 データベース サーバー

    • 優先ディスク グループ: acttestdg

    • RAC node list: RAC ノード 1 の IP

      バックアップ パラメータ ファイルは /act/touch/<var>preferred_disk_group</var>/ にコピーされます。例:

      /act/touch/acttestdg/<var>database_name</var>___backup.ora

  2. Oracle データベースをシャットダウンします。

    ノード 1 から Oracle OS ユーザーに su します。

     su - oracle
    

    Oracle 環境を設定します。srvctl を使用して、すべてのノードでデータベースを停止します。

     srvctl stop database -d <var>database_name</var>
    

    データベースがシャットダウンされていることを確認します(すべてのノードで)。データベースの残りのプロセスをすべて終了します。

    ps -ef | grep <var>db_name</var>
    
  3. /act/touch/acttestdg にコピーされたバックアップ パラメータ ファイルを使用して、データベースを nomount 状態で起動します。

  4. Oracle 環境を設定します。sqlplus を使用してデータベースを起動します。

    ```sqlplus
    / as sysdba
    startup nomount pfile='/act/touch/acttestdg/<var>db_name</var>___backup.ora';
    ```
    
  5. 新しい spfile を作成して、データベースを再起動します。

    ディスク グループの元の spfile のパスを取得するには:

     ```sqlplus
     cat $ORACLE_HOME/dbs/init(database sid).ora
     ```
    

    例: spfile=+preferred disk group/db_name/spfiledb_name.ora

         create spfile='+<var>preferred disk group</var>/<var>db_name</var>/spfile<var>db_name</var>.ora' from pfile='/act/touch/acttestdg/<var>db_name</var>___backup.ora';
    

    nomount 状態で spfile を使用してデータベースを再起動します。

     ```sql
     shutdown immediate;
     startup nomount;
     ```
    
  6. Backup and DR のマウントされたアーカイブ ログ イメージから RMAN を使用して制御ファイルを復元します。ログ マウント イメージの最新の制御ファイルを使用します。例:
    /acttestdb_Log/cf-D_<var>db_name</var>-id_<var>db_id</var>.ctl。複数のログイメージが存在する場合は、
    /acttestdb_Log_1/cf-D_<var>db_name</var>-id_<var>db_id</var>.ctl を使用します。

     ```rman
     rman target /
     restore controlfile from '/acttestdg_Log_1/cf-D_<var>db_name</var>-id_<var>db_id</var>.ctl' ;
     ```
    
  7. データベースをマウントします。

     ```rman
     alter database mount;
     ```
    
  8. バックアップと DR のマウントされたデータベース イメージとアーカイブログ イメージのデータファイルとアーカイブログ フォルダを RMAN にカタログします。

     ```rman
     run { catalog start with '+acttestdg/<var>db_name</var>/datafile' noprompt;
     catalog start with '+acttestdg/<var>db_name</var>/archivelog' noprompt;
     catalog start with '/acttestdg_Log' noprompt;}
     ```
    
  9. データベースを復元して復旧します。

     ```rman
     run { restore database ; recover database ; }
     ```
    

    特定の時点の復元を行うには、次のように recover コマンドを実行します。

     ```rman
     run
     {
     restore database;
     recover database until time "to_date('<var>timestamp</var>','yyyymmddhh24mi')";
     }
     ```
    
  10. リセット ログ オプションを使用してデータベースを開きます。

    • プライマリ データベースの復元の場合:

       alter database open resetlogs;
      

      RAC 構成では、リセットログの後に、ノード 1 のデータベースをシャットダウンし、すべてのノードでデータベースを起動するという追加の手順が必要です。sqlplus を使用してデータベースをシャットダウンします。

       / as sysdba
       shutdown immediate;
      

      srvctl を使用して、すべてのノードでデータベースを起動します。

       start database -d <var>database_name</var>
      
    • Data Guard スタンバイ データベースの復元の場合:

      • 非 RAC 構成の場合: Data Guard の管理対象リカバリ プロセスを開始します。

        alter database recover managed standby database nodelay disconnect;
        
      • RAC 構成の場合: ノード 1 でデータベースをシャットダウンし、すべてのノードでマウントされた状態でデータベースを起動します。

        1. sqlplus を使用してデータベースをシャットダウンします。

          as sysdba
          shutdown immediate;
          
        2. srvctl を使用して、すべてのノードでデータベースをマウント状態で起動します。

          start database -d <var>database_name</var> -o mount
          
        3. Data Guard のマネージド リカバリ プロセスを開始します。

          alter database recover managed standby database nodelay disconnect;
          

    データベースは読み取りと書き込みに使用できます。

Oracle の表領域とデータファイルを復元する

たとえば、データの破損が原因で単一のテーブルスペース データファイルを復元するには:

  1. バックアップ/リカバリ アプライアンスから最新のデータベース スナップショットを Oracle サーバーにマウントします。

  2. データベース バックアップ スナップショットを RMAN にカタログ登録します。

  3. ここに記載されているように、バックアップ スナップショットを使用してテーブルスペースを復元します。

ASM ディスク グループ上の本番環境データベースの単一のテーブルスペースを復元する

本番環境データベースの単一のテーブルスペースをプライマリ ノードに復元するには:

  1. 標準マウントとして Oracle データベースをマウントするで説明されているように、データベースの特定の時点のスナップショットをマウントします。

  2. [Mount] ウィンドウの [Mapping Options] で、イメージのマウント ポイントを指定します。たとえば、ASM ディスク グループのイメージの場合は、[Preferred Disk Group] にディスク グループ名を指定します。ファイル システムのイメージの場合は、/acttestdb などのマウント ロケーションを指定します。

  3. プライマリ ノードから、Oracle OS ユーザーとしてデータベース サーバーにログインします。

  4. データベース環境を設定して RMAN にログインします。

    rman target /
    
  5. RMAN プロンプトで、バックアップ データファイルとアーカイブログ フォルダをカタログ化します。

    例: ASM ディスク グループで保護されているデータベース イメージ(マウントされた ASM ディスク グループ名「acttestdg」):

    ```rman
    catalog start with '+acttestdg/<var>db_name</var>/datafile' noprompt;
    catalog start with '+acttestdg/<var>db_name</var>/archivelog' noprompt;
    catalog start with &#8216;/<var>mountpoint_log</var>'; noprompt;
    (If archivelogs are protected by Backup and DR)
    ```
    

    例: ファイル システムで保護されたデータベース イメージ(マウントされたファイル システム名「/acttestdb」):

    ```rman
    catalog start with '/acttestdb/datafile' noprompt;
    catalog start with '/acttestdb/archivelog'
    noprompt;
    catalog start with '/acttestdb_log/archivelog' noprompt;
    ```
    
    (If archivelogs are protected by Backup and DR)
    

    これで、次のようなすべての RMAN 復元コマンドを実行できます。

  6. 完了したら、イメージをマウント解除して削除します。

テーブルスペースを復元する

表領域を復元するには:

    ```rman
    restore tablespace <var>tablespace name</var>;
    recover tablespace <var>tablespace name</var>;
    ```

データファイルを復元する

データファイルを復元するには:

    ```rman
    restore datafile <var>file#</var>;
    recover datafile <var>file#</var>;
    ```

破損したデータベース ブロックを復元する

破損したデータベース ブロックを復元するには:

  1. 標準マウントとして Oracle データベースをマウントするで説明されているように、データベースの特定の時点のスナップショットをマウントします。

  2. [Mount] ウィンドウの [Mapping Options] で、イメージのマウント ポイントを指定します。たとえば、ASM ディスク グループ内のイメージの場合は、[Preferred Disk Group] にディスク グループ名を指定します。ファイル システム内のイメージの場合は、マウント場所(/acttestdb など)を指定します。

  3. プライマリ ノードから、Oracle OS ユーザーとしてデータベース サーバーにログインします。

  4. データベース環境を設定して sqlplus にログインし、v$database_block_corruption をクエリして破損したブロックを確認します。

    ```sh
    sqlplus / as sysdba
    sql> SELECT * FROM V$DATABASE_BLOCK_CORRUPTION;
    ```
    
  5. RMAN にログインして、破損したすべてのブロックを復元します。

    ```rman
    rman target /
    RECOVER CORRUPTION LIST;
    ```
    

    ブロックが復元されると、データベースは V$DATABASE_BLOCK_CORRUPTION からブロックを削除します。

  6. 破損した個々のブロック(データファイル 8、ブロック 13 など)を復元するには:

    RMAN プロンプトから

    ```rman
    recover datafile 8 block 13;
    ```
    

失われた制御ファイルを復元する

失われた制御ファイルを復元するには:

  1. 標準マウントとして Oracle データベースをマウントするで説明されているように、データベースの特定の時点のスナップショットをマウントします。

  2. [Mount] ウィンドウの [Mapping Options] で、イメージのマウント ポイントを指定します。たとえば、ASM ディスク グループのイメージの場合は、[Preferred Disk Group] にディスク グループ名を指定します。ファイル システムのイメージの場合は、/acttestdb などのマウント場所を指定します。

  3. プライマリ ノードから、Oracle OS ユーザーとしてデータベース サーバーにログインします。

  4. データベース環境を設定して sqlplus にログインし、データベースをシャットダウンして nomount 状態で起動します。

    スタンドアロン データベースの場合:

    ```sql
    sqlplus / as sysdba
    sql> shutdown immediate;
    sql> startup nomount;
    ```
    

    マウントされたイメージノードの RAC データベースの場合、すべてのノードでデータベースをシャットダウンします。

    ```sh
    srvctl stop database -d <var>db_name</var>
    sql> startup nomount;
    ```
    
  5. Backup and DR のマウントされたイメージから制御ファイルを復元します。

    例: /acttestdb(ファイル システム)と +acttestdg(ASM 用)

    ```rman
    rman target /
    restore controlfile
    from '/acttestdb/cf-D_<var>db_name</var>-id_<var>db_id</var>.ctl' ; (Filesystem
    mount)
    restore controlfile
    from '+acttestdb/cf-D_<var>db_name</var>-id_<var>db_id</var>.ctl' ; (ASM
    mount)
    ```
    
  6. sqlplus からデータベースをマウントして開きます。

    ```sql
    sqlplus / as sysdba
    sql> alter database mount;
    sql> recover database until cancel;
    sql> alter database open resetlogs;
    ```
    

Oracle プラグイン可能データベースを復元する

Oracle 12c 以降のプラガブル データベース(PDB)を復元するには:

  1. ソース データベース サーバーからイメージをマウントして復元します。[マウント] ウィンドウで、RAC ノード 1 の ASM でイメージをマウントする優先ディスク グループを指定します。データベース イメージのマウント方法の詳細については、データ アクセス用に ASM ディスク グループで保護された Oracle データベース イメージをマウントするをご覧ください。

  2. プラガブル データベースを閉じます。

    1. Node 1 から su への Oracle ユーザー

      su - oracle
      
    2. Oracle 環境を設定します。「sysdba」ユーザーとして Oracle データベースに接続します。

         / as sysdba
         alter pluggable database <var>pluggable_db_name</var> close;
      
  3. バックアップと DR のマウントされたデータベース イメージとアーカイブログ イメージのデータファイルとアーカイブログ フォルダを RMAN にカタログします。

        run { catalog start with '+acttestdg/<var>db_name</var>/datafile' noprompt;
        catalog start with '+acttestdg/<var>db_name</var>/archivelog' noprompt;
        catalog start with '/acttestdg_Log' noprompt;
        }
    
  4. プラガブル データベースを復元する

        run
        {
        restore pluggable database <var>pluggable_db_name</var>;
        recover pluggable database <var>pluggable_db_name</var> until time "to_date('<var>required time stamp</var>>';,';yyyymmddhh24mi')";
        }
    
  5. プラガブル データベースを開きます。

        alter pluggable database <var>pluggable_db_name</var> open;
    

プラガブル データベースは読み取り / 書き込み用に開いています。

Oracle DBA ガイド