バックアップ/リカバリ アプライアンスで Backup and DR を使用するために Windows 環境で Oracle データベースを準備する

始める前に

Windows 環境で Oracle データベースを検出、保護、マウントする前に、次のことを確認してください。

  1. データベース サーバーで次の設定を確認します。

    1. Oracle データベースと Oracle Listener が稼働している(Windows サービスを確認)。

    2. SID という名前の tns エントリがあることを確認します。tnsnames.ora ファイルは次の場所にあります。

      %ORACLE_HOME%\network\admin
      
    3. 次のコマンドを実行して、tns エントリが有効であることを確認します。

      %ORACLE_HOME%\bin\tnsping <SID>
      
  2. ログモードがアーカイブログ モードに設定されているかどうかを確認します。

    sql> archive log list
    

    データベースが no-archive log モードの場合は、archive log モードに戻します。

    sql> shutdown immediate;
    sql> startup mount;
    sql> alter database archivelog;
    sql> alter database open;
    
  3. データベースの変更ブロック トラッキングを有効にします。データベース BCT がオフの場合、増分バックアップ時間に影響します。変更ブロック トラッキング機能は Oracle Enterprise Edition で使用できます。SQL クエリを実行して、変更ブロックのトラッキングが有効になっていることを確認します。クエリを実行します。

    sqlplus / as sysdba
    sql> select * from v$block_change_tracking;
    

変更ブロックのトラッキングを有効にするには:

    sql> alter database enable block change tracking
    using file '<Oracle home directory>\orcl.bct';

Windows 環境で Oracle データベースをバックアップする

Windows 環境で Oracle データベースをバックアップする手順は次のとおりです。

  1. アプライアンス管理コンソールで、Oracle データベースのアプリケーションの詳細と設定を設定します。

  2. バックアップ プランを適用してデータベースを保護します。

報告されている問題

Oracle 19c SQL*Plus(sqlplus.exe)が、Windows で exit コマンドを実行するとハングすることがあります(ドキュメント ID 2820655.1)。このバグは Windows に固有のものです。Oracle は、この問題が SQL*Plus バージョン 19.10、19.11、19.12 で発生することを確認しています。Oracle は次のソリューションを提供しました。

  • SQL*Plus 21.1 以降を使用する(または)
  • パッチ 31466370 を適用します。このパッチは 19.11 と 19.13 で利用できます。

アーカイブログが Backup and DR で保護されていない場合は、RMAN を使用して Windows 環境の Oracle データベースをスケジュールされたバックアップ ポイントに手動で復元する

Windows 環境で Oracle データベース全体を復元するには:

  1. Oracle データベースを標準マウントとしてマウントするで説明されているように、Backup and DR からデータベース バックアップ スナップショットを Oracle サーバーにマウントします。

  2. データベース環境を設定し、Backup and DR のマウントされたボリューム(たとえば、E: にマウントされたデータベース ボリューム)のパラメータ ファイルを使用して、データベースを no-mount 状態で起動します。

    sqlplus / as sysdba
    sql> startup nomount pfile='E:\<sid>___backup.ora';
    
  3. pfile から spfile を作成します。

    sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora'
    from pfile='E:\<sid>___backup.ora';
    
  4. nomount 状態の spfile でデータベースを起動します。

    sql> shutdown immediate;
    sql> startup nomount;
    
  5. Backup and DR のマウントされたボリュームから RMAN を使用して制御ファイルを復元します。

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

    rman> alter database mount;
    
  7. Backup and DR のマウントされたボリュームから RMAN にデータファイルとアーカイブ ファイル フォルダをカタログ化します。

    rman> run
    {
    catalog start with 'E:\datafile' noprompt;
    catalog start with 'E:\archivelog' noprompt;
    }
    
  8. データベースを復元して復旧します。

    rman> run
    {
    restore database;
    recover database;
    }
    
  9. リセットログ オプションを使用してデータベースを開きます。

    rman> alter database open resetlogs;
    

RMAN を使用して、Backup and DR で保護されたアーカイブログのロールフォワードを使用して、Windows 環境で Oracle データベースをスケジュールされたバックアップ ポイントに手動で復元する

  1. 復元するソース データベース サーバーからバックアップをマウントします。Oracle データベースを標準マウントとしてマウントするで説明されているように、Backup and DR から Oracle サーバーにバックアップ スナップショットをマウントします。

  2. データベース環境を設定し、Backup and DR のマウントされたボリュームのパラメータ ファイルを使用して、データベースを no-mount 状態で起動します。この例では、データベース バックアップは E:\ にマウントされ、保護されたアーカイブ ログは Z: にマウントされます。

       sqlplus / as sysdba
    
       startup nomount pfile='E:\<sid>___backup.ora';
    
  3. pfile から spfile を作成します。

    sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora' from
    pfile='E:\<sid>___backup.ora';
    
  4. spfile を使用してデータベースを nomount 状態で起動します。

    ```sql
    shutdown immediate;
    startup nomount;
    ```
    
  5. Backup and DR のマウントされたアーカイブ ログ バックアップから RMAN を使用して制御ファイルを復元します。

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

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

    ```rman
    rman> run
    {
    catalog start with 'E:\datafile' noprompt;
    catalog start with 'E:\archivelog' noprompt;
    catalog start with 'Z:\archivelog' noprompt;
    }
    ```
    
  8. データベースを復元して復旧します。

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

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

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

    ```rman
    rman> alter database open resetlogs;
    ```
    

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

データベース ボリュームがマウントされるのを監視するスクリプト

アプリケーション対応マウントを作成すると、ウォッチ スクリプトを使用して、Backup and DR からマウントされているボリュームと実行中の Oracle プロセスを表示できます。アプリケーション認識型マウントについては、Oracle Database を仮想アプリケーションとしてマウントするをご覧ください。

アプリケーション認識マウントを実行する場合は、このウォッチ スクリプトを使用できます。スクリプトの場所は C:\Program Files\Backup and DR\scripts である必要があります。Windows ホストで実行されるスクリプトは、.bat ファイルまたは .vbs ファイルである必要があります。

    ```Windows
    @echo off
    :loop
    echo. > watchtemp
    echo ------------------ >> watchtemp
    echo  Oracle Processes >> watchtemp
    echo ------------------ >> watchtemp
    tasklist /svc | findstr oracle >> watchtemp
    echo. >> watchtemp
    echo ------------------ >> watchtemp
    echo   Backup and DR Mounts >> watchtemp
    echo ------------------ >> watchtemp
    wmic volume get label, name | findstr Backup and DR >> watchtemp
    echo. >> watchtemp
    cls
    type watchtemp
    timeout 2 > null
    goto loop
    ```

次のような出力が生成されます。

    Oracle Processes
    ------------------
    oracle.exe                    1492 OracleServiceORCL
    oracle.exe                    3768 OracleServiceTestDB
    oracle.exe                     872 OracleServiceTestDB2
    ------------------
      Backup and DR Mounts
    ------------------
    Backup and DR-Backup-ORCL    D:\mount_1