トポロジのデプロイの準備

Data Guardが機能するには、異なるリージョンの2つのデータベースが通信する必要があります。そのため、OCIの2つのリージョン間に、それぞれのDRGを介してリモート・ピアリング接続を設定する必要があります。DRGは、OracleDB for Azure設定によって作成されるため、既存のDRG間のリモート・ピアリング接続を確立するだけで済みます。

ネットワークの設定

ネットワークを設定するには、次のステップを実行します

  1. Azure VMおよびOracleDB for Azureデータベース・システムのネットワーク接続を設定します。
    • Oracle DBシステムのssh秘密キーがAzure VMで使用可能であることを確認します。
    • Azure VMsとOracleDB for Azure DBシステム間の接続をテストします。
  2. OCIのデータベース・システムのネットワークを設定します。
    1. まず、リージョン1のDB SystemのVCN詳細に移動し、「Dynamic Routing Gateway Attachments」、次にDRG名を選択して、DRGの詳細をリージョン1にロードします。次に、「リモート・ピアリング接続アタッチメント」を選択します。2番目のブラウザ・ウィンドウで、リージョン2に対してまったく同じ操作を行います。
    2. 次に、両方のリージョンで、「リモート・ピアリング接続の作成」を選択してRPCを作成します。
    3. 両方のRPCが作成されたら、リージョン1でRPC名を選択し、OCIDをコピーします。
    4. リージョン2で、RPC名を選択し、「接続の確立」を選択します。リージョン1の正しいリージョン名(接続先)を選択し、前のステップでコピーしたリージョン1のRPCのOCIDを指定します。接続を確立してからしばらくすると、ピア・ステータスは「ピアリング済」になります。
    5. 次に、2つのリージョンのVCN間のトラフィックを許可します。VCNの詳細に移動し、デフォルトのセキュリティ・リストを選択します。反対のVCNのCIDR範囲からのトラフィックを許可するには、「イングレス・ルールの追加」を選択します。
    6. 最後に、Azureの仮想マシンからそれぞれのOCIベースDBシステムに接続します。両方のベースDBシステムのtnsnames.oraファイルを編集して、もう一方のデータベースに接続します。
    7. 両方のDBシステムから反対側のデータベースへのtnspingが正常に動作していることを確認します。

Oracle Database for Azure DR構成の設定

OracleデータベースをAzure DR構成用に設定するには、次に示すように、プライマリ・データベースとセカンダリ・データベースの両方を準備する必要があります。

ノート:

「コピー」をクリックして、コマンドラインに貼り付けるためにコマンド例をクリップボードに保存します。variablesは、実装に固有の値に置き換えてください。

プライマリ・データベースの準備

プライマリ・データベースを準備するには、静的リスナーの構成、tnsnames.oraファイルの更新、および様々なデータベース設定およびパラメータの構成を行う必要があります。

  1. SQL>プロンプトから、次の情報を確認します。
    • データベース・フラッシュバックが有効であることの確認
    • チェック・フォース・データベース・ロギング使用可能
    • データベースがアーカイブ・ログ・モードであることを確認してください
    • データベースがオープン・モードであることを確認してください
    • データベースがプライマリ・データベース・ロールにあることを確認してください
    次のコマンドを実行します:
    select log_mode, FORCE_LOGGING, FLASHBACK_ON, OPEN_MODE, DATABASE_ROLE from v$database ;
    出力は次のようになります。
    LOG_MODE              FORCE_LOGGING               FLASHBACK_ON               OPEN_MODE                 DATABASE_ROLE
    ----------------      ------------------------   ----------------------     --------------------        -----------------------
    ARCHIVELOG            YES                         YES                        READ WRITE                  PRIMARY
  2. 次のコマンドを実行して、自動スタンバイ・ファイル管理がautoに設定されていることを確認します。
    show parameter standby_file_management
    出力は次のようになります。
    NAME                                          TYPE          VALUE
    ------------------------------------          -----------  ----------
    standby_file_management                       string       AUTO
  3. ブローカ構成ファイルを設定します。
    show parameter dg_broker_config_file1;
    出力は次のようになります。
    NAME                                          TYPE          VALUE
    ------------------------------------         ----------- ------------------------------
    dg_broker_config_file1                        string        /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr1dbuks_898_lhr.dat
    

    その後、このコマンドを入力します。

    show parameter dg_broker_config_file2;
    出力は次のようになります。
    
    NAME                                                     TYPE          VALUE
    ------------------------------------         ----------- ------------------------------
    dg_broker_config_file2                             string          /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr2dbuks_898_lhr.dat
  4. Data Guardブローカを有効にします。
    show parameter dg_broker_start
    出力は次のようになります。
    NAME                                             TYPE         VALUE
    ------------------------------------            ----------- --------------
    dg_broker_start                                  boolean      FALSE
    その後、次のコマンドを入力します。
    alter system set dg_broker_start=true scope=both;
    
    show parameter dg_broker_start
    出力は次のようになります。
    NAME                                             TYPE        VALUE
    ------------------------------------            ----------- --------------
    dg_broker_start                                  boolean     TRUE
  5. コマンド・プロンプト([oracle@ldbuksdr ]$など)から、リスタナのステータスを確認します。
    lsnrctl status
  6. データベース構成の詳細に注意してください。
    srvctl config database -d db_unique_name
  7. tnsエントリに注意してください。
    cat $ORACLE_HOME/network/admin/tnsnames.ora
  8. ノートsqlnet.oraの出力:
    cat $ORACLE_HOME/network/admin/sqlnet.ora
  9. 次のコマンドを入力して、/tmpの場所にあるスタンバイDBシステムにパスワード・ファイルをコピーします:
    cd .ssh
    scp -i private_key /tmp/orapw<sid> opc@ip_standby_vm:/tmp/orapwsid   
  10. ウォレット・ファイルを見つけて、/tmpの場所のスタンバイDBシステムにコピーします:
    select CON_ID, WRL_PARAMETER, WRL_TYPE, STATUS, WALLET_TYPE from V$ENCRYPTION_WALLET;
    出力は次のようになります。
    CON_ID         WRL_PARAMETER                                                                      STATUS       WALLET_TYPE
    ----------    ------------------------------------------------------------------------------     ------------  ------------ ----------------------------
    1              /opt/oracle/dcs/commonstore/wallets/dbuks_898_lhr/tde/                             OPEN          AUTOLOGIN
    2                                                                                                 OPEN          AUTOLOGIN
    3                                                                                                 OPEN          AUTOLOGIN
    
    さらに、次のように入力します。
    cd /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde
    ls -ltra
    
    次のように表示されます:
    -rw------- 1 oracle asmadmin  5467 Jun 19 18:59 ewallet.p12
    -rw------- 1 oracle asmadmin  5512 Jun 19 18:59 cwallet.sso
    
    次に、次のコマンドを入力します(db_unique_nameはウォレットのデータベースの一意の名前)。
    
    [oracle@ ~]$ cp /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12/tmp/cwallet.p12
    cp /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.sso/tmp/cwallet.sso
    chmod 777 /tmp/ewallet.p12
    chmod 777 /tmp/cwallet.sso
    scp -i private_key /tmp/ewallet.p12 opc@ip_standby_vm:/tmp/ewallet.p12
    scp -i private_key /tmp/cwallet.sso opc@ip_standby_vm:/tmp/cwallet.sso.
  11. 静的リスナーを構成します。
    スタンバイ・データベースの初期インスタンス化には、静的リスナーが必要です。データベースが停止すると、静的リスナーによってインスタンスへのリモート接続が有効になり、Oracle Data Guardを使用してインスタンスを起動できます。listener.oraファイルに改行または空白がないことを確認してください。

    プライマリ・データベースで、listener.oraファイルにSID_LIST_LISTENERファイルを追加して、プライマリ・データベースのデータベースの一意の名前、Oracle HomeおよびOracleシステム識別子(SID)を含めます。

    lsnrctl status 
    vi listener.ora 
    次のエントリをlistener.oraに追加します。ここでは:
    • DB_UNIQUE_NAMEは、プライマリ・データベースの一意の名前です。
    • ORACLE_HOMEは、プライマリ・データベースのローカルOracleホームです。
    • ORACLE SIDは、プライマリ・データベースのSIDです。
    SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) 
    (SID_NAME = ORACLE SID)))
    エントリは次のようになります(GLOBAL_DBNAMEORACLE_HOMEおよびSID_NAMEのエントリは異なります)。
    SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)
    (ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1)(SID_NAME=dbuks)))
    リスナーを再ロードし、そのステータスを確認します。
    lsnrctl reload
    lsnrctl status
  12. tnsエントリを構成します。
    適切なREDO転送を確保するには、プライマリおよびスタンバイの両方のtnsnames.oraファイルに各データベースのエントリが必要です。IPアドレスは、サーバー名をIPアドレスに解決するためのDNSがデータベース間にないために使用されます。次の例を使用して、構成に関連する値を置換します。Oracle Real Application Clusters (Oracle RAC)構成ではスキャン・リスナー名を解決できないため、アドレス・リストを使用してすべてのノードを定義する必要があります。これらは後で追加されます。初期インスタンスでは、Oracle Recovery Manager (RMAN)が常に同じノードに接続していることを確認するために、tnsエントリに1つのIPアドレスのみをリストする必要があります。
    [oracle@~]$ cd $ORACLE_HOME/network/admin 
    [oracle@~]$ vi tnsnames.ora
    tnsnames.oraファイルのエントリは、次のようになります。
    DBUKS_R2J_AMS=(DESCRIPTION=(SDU=65536)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.91.0.177)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
    (SERVICE_NAME=dbuks_r2j_ams.odsp083156.cvcn.oraclevcn.com)(UR=A))) 
    
    DBUKS_898_LHR=(DESCRIPTION=(SDU=65535)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.90.0.246)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
    (SERVICE_NAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)(UR=A)))

スタンバイ・データベースの準備

次に、スタンバイ・データベースを準備します。

  1. Oracle Database for Azureツールで作成されたデータベースを手動で削除します。
    スタンバイ・データベースを削除する前に、現在のdb_unique_nameを保存し、後で使用するウォレットの場所をメモします。次の問合せは、ウォレットの場所の詳細を示します。
    1. sqlplusコマンド・プロンプトで、次のように入力します。
      select * from V$ENCRYPTION_WALLET; 
    2. 次に、rm_dbfiles.sqlスクリプトを準備して、データベース関連ファイルを削除します。
      srvctl config database -d db_unique_name
    3. 次のスクリプトを実行して、スタンバイとして構築するデータベースを停止し、データベース・ファイルを削除します。
      vi rm_dbfiles.sql 
      set heading off linesize 999 pagesize 0 feedback off trimspool on 
      spool /home/oracle/demo/files.lst 
      select 'asmcmd rm '||name from v$datafile union all select 'asmcmd rm '||name from v$tempfile union all select 'asmcmd rm '||member from v$logfile; 
      spool off 
      create pfile='/home/oracle/demo/ORACLE_UNQNAME.pfile' from spfile; 
      exit
      
    4. 次に、システムDBAとしてsqlplusプロンプトに移動します。
      sqlplus "/ as sysdba"
      次のコマンドを実行します。
      @rm_dbfiles.sql
      exit
    5. 次に、読取り、書込みおよび実行の権限を付与します(db_unique_nameは影響を受けるデータベースの一意の名前)。
      chmod 777 files.lst
      srvctl stop database -d db_unique_name
    6. 保存してスクリプトを実行します。
      ./files.lst 
    スタータ・データベースのすべてのファイルが削除されました。
  2. /tmpで受信したパスワード・ファイルおよびウォレット・ファイルを、プライマリ・データベースからスタンバイ・データベースDBシステムのそれぞれの場所にコピーします。
    1. プライマリから/tmpで受信したデータベース・パスワード・ファイルおよびウォレット・ファイルをスタンバイ・データベースDBシステムのそれぞれの場所にコピーします(orapwsidはSIDパスワードです)。
      sudo cp /tmp/orapwsid $ORACLE_HOME/dbs/orapwsid 
      たとえば次のようにします。
      sudo ls -ltra /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks 
      次のように出力されます。
      
      -rw-r-----1 oracle oinstall 2048 Jul3 13:42 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
    2. パスワード・ファイルのmd5sum出力がプライマリとスタンバイで一致することを確認します(ここで、orapwsidはSIDパスワードです)。
      md5sum /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwsid 
      プライマリ・データベースの出力は次のようになります(orapwsidorapwdbuks)。
      
      b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks 
      
      スタンバイ・データベースの場合:
      
      b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
    3. 既存のウォレット・ファイルを削除し、/tmpからTDEの場所にウォレット・ファイルをコピーします(db_unique_nameは影響を受けるデータベースの一意の名前)。
      [oracle@ ~]$ cd /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/
      rm ewallet.p12 cwallet.sso
      sudo cp /tmp/ewallet.p12 /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12
      sudo cp /tmp/cwallet.sso /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.ss
      chown oracle:asmadmin /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12
      sudo chown oracle:asmadmin /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.sso
  3. 静的リスナーを構成します。
    1. OCIのスタンバイ・データベースで、SID_LIST_LISTENERファイルを追加して、データベースの一意の名前、OCIのOracle Homeおよびプライマリ・データベースのOracleシステム識別子(SID)を含めます。
      lsnrctl status
      vi listener.ora
    2. 次のエントリをlistener.oraファイルに追加します。ここでは:
      • DB_UNIQUE_NAMEは、プライマリ・データベースの名前です。
      • ORACLE_HOMEは、プライマリ・データベースのローカルOracleホームです。
      • ORACLE SIDは、プライマリ・データベースのSIDです。
       SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) 
      (SID_NAME = ORACLE_SID)))
      たとえば、エントリは次のようになります。
      SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME= dbuks_r2j_ams. odsp083156.cvcn.oraclevcn.com)
      (ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1)(SID_NAME=dbuks))) 
    3. リスナーを再ロードし、ステータスを確認します。
      lsnrctl reload 
      lsnrctl status
  4. tnsエントリを構成します。
    cd $ORACLE_HOME/network/admin
    vi tnsnames.ora
    tnsnames.oraファイルのエントリは、次のようになります。
     DBUKS_R2J_AMS=(DESCRIPTION=(SDU=65536)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.91.0.177)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
    (SERVICE_NAME=dbuks_r2j_ams.odsp083156.cvcn.oraclevcn.com)(UR=A))) 
    
    DBUKS_898_LHR=(DESCRIPTION=(SDU=65535)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.90.0.246)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
    (SERVICE_NAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)(UR=A)))