Data Guard のスタンバイ データベースを作成する

プライマリ データベースを Data Guard 用に準備すると、スタンバイ サイトに複製できるようになります。以下のガイドでは、アクティブな複製を使用して、データベースの一貫性のあるコピーを作成しています。

このガイド全体を通して、次の例を使用します。

データベースの一意の名前 サーバーのホスト名 RAC インスタンス名 役割
DBDG_SITE1 site1db1site1db2 DBDG_SITE11DBDG_SITE12 プライマリ
DBDG_SITE2 site2db1site2db2 DBDG_SITE21DBDG_SITE22 スタンバイ

このガイドの Oracle を実行する Bare Metal Solution サーバーには、次の環境変数が構成されています。

環境変数名
ORACLE_BASE /apps/oracle/oracle_base
ORACLE_HOME /apps/oracle/19.0.0/db_home1

設定によっては、環境変数のパスの変更が必要になる場合があります。

スタンバイ データベースを設定する

データベース接続を構成する

スタンバイの場所にある各 Bare Metal Solution サーバーにログインし、$ORACLE_HOME/network/admin/tsnames.ora ファイルを変更して、ネットサービスの構成を更新します。

DBDG_SITE2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBDG_SITE2) (UR=A)
   )
 )

DBDG_SITE1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBDG_SITE1)
    )
  )

一時リスナーを構成する

他のデータベース接続に使用されるリスナーの再起動を避けるため、データベースの重複は一時的なリスナーを使用して行われます。この例ではポート 1523 を使用していますが、クラスタ間の通信用に開いている任意のポートを使用できます。この一時リスナーは、データベースを複製した後に削除します。

  1. スタンバイの場所にあり、データベースの複製プロセスで使用する最初の Bare Metal Solution サーバーにログインします。$ORACLE_HOME/network/admin/listener.ora ファイルを変更して、ネットサービスの構成を更新します。

    LISTENER_DBDG_SITE2 =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = site1db1)(PORT = 1523))
        )
      )
    
    SID_LIST_LISTENER_DBDG_SITE2 =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = DBDG_SITE2_DGMGRL)
          (ORACLE_HOME = ORACLE_HOME)
          (SID_NAME = DBDG_SITE21)
        )
      )
    ADR_BASE_LISTENER = /apps/oracle/oracle_base
    
  2. 一時リスナーを起動します。

    lsnrctl start LISTENER_DBDG_SITE2
    

スタンバイ データベースを準備する

  1. 各データベース インスタンスには、監査ログを格納するディレクトリが必要です。スタンバイ データベースの場所にある各 Bare Metal Solution サーバーに、監査ファイル用のディレクトリを作成します。

    mkdir -p /apps/oracle/oracle_base/admin/DBDG_SITE2/adump
    
  2. 前にスタンバイ データベース サーバーにコピーした $ORACLE_HOME/dbs/initDBDG_SITE21.ora ファイルを変更します。

    1. db_unique_name を新しいスタンバイ データベース名に設定します。
    2. インスタンス固有のパラメータを変更して、スタンバイ データベースのインスタンス名を反映します。以下に例を示します。
      • instance_number
      • thread
      • undo_tablespace
    3. audit_file_dest パラメータを設定して、前の手順で作成したディレクトリを使用します。
    4. 各場所の ASM ディスクグループが異なる名前を使用している場合は、新しいファイルの場所に合わせて db_file_name_convert パラメータと log_file_name_convert パラメータを変更します。
    5. control_files パラメータをコメントアウトします。

    次の例に、このガイドの例を使用して変更したデータベース パラメータ ファイルを示します。パラメータ ファイルに、データベース設定に固有の追加パラメータが含まれていることに注意してください。スタンバイの変更が必要なパラメータのみが示されています。

    *.db_unique_name='DBDG_SITE2'
    DBDG_SITE21.instance_number=1
    DBDG_SITE22.instance_number=2
    DBDG_SITE21.thread=1
    DBDG_SITE22.thread=2
    DBDG_SITE21.undo_tablespace='UNDOTBS1'
    DBDG_SITE22.undo_tablespace='UNDOTBS2'
    *.audit_file_dest='/apps/oracle/oracle_base/admin/DBDG_SITE2/adump'
    #*.control_files='+DATA/DBDG_SITE1/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE1/CONTROLFILE/current.257.1091317089'
    
  3. /etc/oratab ファイルで、oraenv コマンドがスタンバイ データベースの環境変数を設定できるようにエントリを追加します。

    DBDG_SITE21:ORACLE_HOME:N
    

スタンバイ データベースを作成する

  1. スタンバイ データベースに接続できるように ORACLE_SID 環境変数を設定します。

    source oraenv <<< "DBDG_SITE21"
    

    レスポンス The Oracle base has been set to /apps/oracle/oracle_base が返されます。

  2. プライマリ データベースを複製する前に、1 つのノードでスタンバイ インスタンスを手動で開始する必要があります。スタンバイの場所にある最初の Bare Metal Solution サーバーにログインします。SQL*Plus を起動して pfile を使用し、nomount mode のスタンバイ データベースを起動します。

    sqlplus / as sysdba
    
    STARTUP NOMOUNT PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
    

    成功すると、次のようなレスポンスが返されます。

    ORACLE instance started.
    Total System Global Area 1.2885E+10 bytes
    Fixed Size 15988824 bytes
    Variable Size 1845493760 bytes
    Database Buffers 1.1006E+10 bytes
    Redo Buffers 17563648 bytes
    
  3. インスタンスを起動したら、SQL*Plus を終了します。

    EXIT;
    
  4. スタンバイ データベース サービスへの接続を確認します。プライマリ データベースの場所にある各 Bare Metal Solution サーバーから、SQL*Plus を使用してスタンバイ インスタンスに接続してみます。インスタンスに正常に接続できるように、SYS リモート ログインのパスワードを手動で入力します。

    sqlplus sys@DBDG_SITE2_FOR_DUPLICATION as sysdba
    

    成功すると、標準の SQL*Plus プロンプトが表示され、インスタンス パラメータを確認できます。

    SHOW PARAMETER DB_UNIQUE_NAME;
    

    次のようなレスポンスが返されます。

                    NAME        TYPE                          VALUE
        ---------------- ----------- ------------------------------
          db_unique_name      string      DBDG_SITE2
    
  5. DB_UNIQUE_NAME パラメータを確認した後、SQL*Plus を終了します。

    EXIT;
    
  6. Recovery Manager に接続して duplicate コマンドを実行し、アクティブ プライマリ データベースからスタンバイを複製します。

    rman TARGET sys@DBDG_SITE1 AUXILIARY sys@DBDG_SITE2_FOR_DUPLICATION
    
    DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK;
    

    正常に処理されると、次のようなメッセージが表示されます。

    Finished Duplicate Db at ...
    
  7. Recovery Manager を終了します。

    EXIT;
    

スタンバイ データベースの作成を完了する

  1. データベースの複製中に、ASM はスタンバイ データベース用に新しい制御ファイルを作成します。新しいスタンバイ インスタンスに接続して、新しい制御ファイル名を取得します。次の例は、+DATA ディスクグループと +RECO ディスクグループに保存される 2 つの制御ファイルを示しています。

    sqlplus / as sysdba
    
    SET LINESIZE 140
    COLUMN NAME FORMAT a15
    COLUMN VALUE FORMAT a125
    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='control_files';
    

    制御ファイルの名前が [Value] フィールドに表示されます。

               NAME     VALUE
    --------------- ----------------------------------------------------------------------------------------------------
      control_files   +DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089, +RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089
    
  2. 前の手順の制御ファイル名を記録し、$ORACLE_HOME/dbs/initDBDG_SITE21.oracontrol_files パラメータのエントリを新しい値に置き換えます。制御ファイルが複数ある場合は、それぞれをカンマで区切って一重引用符で囲みます。

    *.control_files='+DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089'
    
  3. SQL*Plus でスタンバイ データベースに接続し、変更した pfile から新しい spfile を作成します。

    sqlplus / as sysdba
    
    CREATE SPFILE='+DATA/DBDG_SITE2/spfileDBDG_SITE2' FROM PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
    
  4. asmcmd コマンドを使用して、パスワード ファイルを ASM ディスクグループにコピーします。

    asmcmd cp /apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21.ora +DATA/DBDG_SITE2/orapwDBDG_SITE2
    
  5. スタンバイ データベース インスタンスをシャットダウンし、一時的な pfile ファイルとパスワード ファイルを削除します。

    sqplus / as sysdba
    
    SHUTDOWN IMMEDIATE;
    EXIT;
    
    rm $ORACLE_HOME/dbs/orapwDBDG_SITE21.ora $ORACLE_HOME/dbs/initDBDG_SITE2.ora
    
  6. スタンバイ データベースの場所にある最初の Bare Metal Solution サーバーで、データベースの重複に使用される一時リスナーを停止します。

    lsnrctl stop LISTENER_DBDG_SITE2
    
  7. スタンバイ データベースの場所にある最初の Bare Metal Solution サーバーで、$ORACLE_HOME/network/admin/listener.ora ファイルの一時エントリを削除します。

  8. srvctl コマンドを使用して、新しいスタンバイ データベースとインスタンスをクラスタ レジストリに追加します。

    srvctl add database \
      -db DBDG_SITE2 \
      -oraclehome /apps/oracle/19.0.0/db_home1 \
      -spfile +DATA/DBDG_SITE2/spfileDBDG_SITE2 \
      -pwfile +DATA/DBDG_SITE2/orapwDBDG_SITE2 \
      -role PHYSICAL_STANDBY \
      -startoption MOUNT
    
    srvctl add instance \
      -db DBDG_SITE2 \
      -instance DBDG_SITE21 \
      -node site2db1
    
    srvctl add instance \
      -db DBDG_SITE2 \
      -instance DBDG_SITE22 \
      -node site2db2
    
  9. srvctl コマンドを使用して、スタンバイ データベースを起動します。

    srvctl start database -db DBDG_SITE2
    

次のステップ

Data Guard ブローカーを構成して有効にします