バックアップ/リカバリ アプライアンスで 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
    

    データベースが非アーカイブログ モードの場合は、アーカイブログ モードに戻します。

    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)が、exit コマンドの実行時に Windows でハングすることがあります(ドキュメント 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 のマウントされたボリュームのパラメータ ファイルを使用して、データベースを no-mount 状態で起動します(たとえば、マウントされたデータベース ボリュームを E: に設定します)。

    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;
    

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

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

  2. データベース環境を設定し、Backup and DR のマウントされたボリュームのパラメータ ファイルを使用して、データベースをマウントなしの状態で起動します。この例では、データベース バックアップは 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. nomount 状態で spfile を使用してデータベースを起動します。

    ```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 データベースを仮想アプリケーションとしてマウントするをご覧ください。

アプリケーション認識マウントを実行するときに、この監視スクリプトを使用できます。スクリプトの場所は、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