DRトポロジの構成

ディザスタ・リカバリ(DR)トポロジを設定します。スクリプトを使用してプロセスを効率化できます。

スクリプトのダウンロード

GitHubリポジトリから最新の設定スクリプトを取得します。

ノート:

ダウンロードしたすべてのスクリプトを同じフォルダに配置します。
  1. GitHubリポジトリに移動します。
  2. maa/fmw-wls-with-adb-drディレクトリのすべてのスクリプトをダウンロードします。
  3. maa/app_dr_commonディレクトリのすべてのスクリプトをダウンロードします。
    これらのスクリプトはお互いを呼び出します。ある時点で特定の操作が実行されているにもかかわらず、ディレクトリ全体をダウンロードし、すべてのスクリプトを同じフォルダに配置します。プライマリ・サイトとセカンダリ・サイトの両方でスクリプトが必要になります。
  4. このドキュメントの手順に従い、実行する各操作について、各スクリプトで必要な変数を読み取ります。

ダウンロードされたファイルには、次のタスクを実行するためのスクリプトが含まれています。

  1. データソースのTNS別名の構成
  2. 初期DR構成を設定します
  3. 進行中のレプリケーションの設定
  4. Oracle WebLogic ServerOracle SOAまたはOracle Fusion Middlewareシステムのウォレットを変更します。
各スクリプトは、DR設定のさまざまな部分と障害保護システムのライフサイクルの自動化を提供します。次の表に、ユーティリティーのサマリーを示します。
スクリプト名 説明
fmwadb_config_replica.sh サイト間で構成をレプリケートします。
fmwadb_dr_prim.sh DR設定のプライマリサイトを準備します。
fmwadb_dr_stby.sh DR設定のセカンダリサイトを準備します。
fmwadb_rest_api_listabds.sh ADB IDおよびテナンシ情報に基づいてAutonomous Databaseロールを取得します。
fmwadb_switch_db_conn.sh 既存の接続情報を新しいADBS WALLETに置き換えます。
fmw_change_to_tns_alias.sh Oracle WebLogicデータソースおよびjps configファイルで使用される接続文字列をtns別名に置き換えます。
fmw_dec_pwd.sh Oracle WebLogicで暗号化されたパスワードを復号化します。
fmw_enc_pwd.sh Oracle WebLogic暗号化を使用してパスワードを暗号化します。
fmw_get_connect_string.sh Oracle WebLogic、Oracle SOAまたはOracle Fusion Middlewareデータソースが使用している接続文字列を返します。
fmw_get_ds_property.sh 特定のデータソース・プロパティの値を返します。

仮想フロントエンドのプライマリ中間層の準備

プライマリ中間層がまだ仮想フロントエンド名で構成されていない場合は、これらのアクションを実行して障害回復(DR)構成の準備を行います。

  1. 仮想フロントエンド名とIPをすべてのプライマリ中間層ホストの/etc/hostsファイルに追加します。
    ドメイン・ネーム・システム(DNS)を介したクライアント対応の解決に関係なく、各サイトは常にフロントエンド名をローカル・ロード・バランサに解決する必要があります。rootユーザーとして、/etc/hostsファイルを編集し、プライマリ・ロード・バランサのパブリックIPを仮想フロントエンドの完全修飾ドメイン名(FQDN)にマップします。すべてのプライマリOracle WebLogicホストで繰り返します。たとえば:
    [oracle@wlsociprefix-wls-0 ~]$ more /etc/hosts
    (...)
    # Front-end virtual name
    111.111.111.111 mywebapps.example.com

    ノート:

    スイッチオーバーまたはフェイルオーバーがある場合、プライマリOracle WebLogicホストの/etc/hostsファイルは変更しないでください。プライマリOracle WebLogicホストは、常にフロントエンドIPを使用して仮想フロントエンド名を解決します。スイッチオーバーおよびフェイルオーバー手順中に必要な DNS更新は、クライアントが使用する DNSまたはホストファイルで実行されます。

  2. フロントエンド名をクラスタ・フロントエンドとして構成します。
    1. インスタンスのOracle WebLogicコンソールにログインします。
    2. 「環境」「クラスタ」の順にナビゲートして、クラスタを選択します。
    3. 「構成」「HTTP」の順に移動します。
    4. FrontedホストをフロントエンドFQDNに設定します。
      たとえば、mywebapps.example.comです。
    5. HTTPおよびHTTPSのフロントエンド・ポートに値が正しく構成されていることを確認します。
    6. 「保存」「アクティブ化」の順にクリックします。
  3. クラスタを再起動して変更を実装します。

TNS別名を使用するためのプライマリのデータ・ソースおよびJPS構成の変更

Java Database Connectivity (JDBC) URLで透過的ネットワーク・サブストレート(TNS)別名を使用すると、リモート・リフレッシュ可能クローンを使用してプライマリとスタンバイ間を移動することで、Oracle WebLogic Server for Oracle Cloud Infrastructureデータ・ソースの再構成が容易になります。

ノート:

リリース23.1.1 (2023年2月)以降にプロビジョニングされたOracle SOA Suite on Marketplaceインスタンスは、すぐに利用できるTNS別名アプローチで構成されています。この場合、このタスクはスキップできます。

TNS別名を使用するには、データソースおよびjpsファイルにOracle Fusion Middleware構成ファイル内の変数oracle.net.tns_adminが含まれている必要があります。

  1. コマンドgrepを使用して、Oracle Fusion Middleware構成ファイルでoracle.net.tns_admin変数を検索します。
    [oracle@soarefr-soa-0 ~]$ grep oracle.net.tns_admin ${DOMAIN_HOME}/config/fmwconfig/jps-config.xml 
    <property name="oracle.net.tns_admin" value="/u01/data/domains/soarefr_domain/config/atp"/>
    
    [oracle@soarefr-soa-0 ~]$ grep oracle.net.tns ${DOMAIN_HOME}/config/jdbc/opss-datasource-jdbc.xml  -A1 | grep value 
    <value>/u01/data/domains/soarefr_domain/config/atp</value>
    [oracle@soarefr-soa-0 ~]$
    jps-config.xmlに反映されるディレクトリ(およびデータソース)は、WebLogicサーバー・ドメイン内のすべてのノードから使用可能でアクセス可能である必要があります。
    • Oracle SOA Suite on Marketplaceでは、このディレクトリは$DOMAIN_HOME/config/atpディレクトリ(リリース23.1.1より前)または$DOMAIN_HOME/config/tnsadminディレクトリ(リリース23.1.1以降)にあり、管理対象サーバーの起動時にWebLogicサーバーによって他のすべてのノードに自動的にレプリケートされます。

      ノート:

      プライマリOracle SOA Suite on Marketplaceが23.1.1より前の場合は、フォルダを$DOMAIN_HOME/config/tnsadminディレクトリに移動して、スタンバイとの一貫性を保つことをお薦めします。
    • Oracle WebLogic Server for Oracle Cloud Infrastructureでは、これは$DOMAIN_HOME/atpwalletにあります。

      ノート:

      ウォレットがDOMAIN_HOME/configディレクトリの下に配置されていない場合、ウォレット・ディレクトリの内容への変更は、Oracle WebLogic Serverインフラストラクチャによって他のノードに自動的にレプリケートされません。このような場合は、ウォレット・ディレクトリを変更(および必要なデータソース構成を更新)するか、更新時に他のノードに手動でコピーする必要があります。
    • その他の構成では、ディレクトリを共有ストレージに配置できます。
    いずれの場合も、WebLogicサーバー・ドメインの異なるすべてのメンバーが同じtns_adminディレクトリにアクセスできる必要があります。このディレクトリには、Oracle Autonomous Databaseで作成された様々なサービスに対して異なる別名を持つtnsnames.oraファイルが含まれます。

    次に、Oracle Autonomous Database Serverlessを使用したOracle Fusion Middleware構成のサンプルtnsnames.oraファイルを示します。

    [oracle@soarefr-soa-0 ~]$ cat 
    $DOMAIN_HOME}}/config/tnsadmin/tnsnames.ora
    soaadb1_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_tp = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_tpurgent = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tpurgent.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))

    tnsnames.oraファイルの変更は、WLSデータ・ソースによって動的に使用されます。つまり、データソースを再起動しなくても、tnsnames.oraファイルを(たとえば、別のサービスをポイントするように)変更できます。

  2. Oracle SOA Suite on MarketplaceまたはAutonomous Databaseを使用するOracle WebLogic Server for Oracle Cloud InfrastructureシステムでTNS別名を使用するように標準データソース構成を変更するには、fmw_change_to_tns_alias.shスクリプトを使用します。

    別名は、$DOMAIN_HOME/config/jdbcの下のすべてのデータソース・ファイルおよび$DOMAIN_HOME/config/fmwconfigの下にあるjps configファイルで使用する必要があります。

    ノート:

    このスクリプトは、接続文字列およびtns_adminプロパティのみを変更します。他のカスタム・データソースを追加する場合は、Oracle WebLogic、Oracle SOA Suite on MarketplaceおよびOracle Fusion Middlewareの内部データソースと同様に、TNS別名も使用する必要があります。
    Oracle WebLogic Server for Oracle Cloud InfrastructureまたはOracle SOA Suite on MarketplaceOracle Autonomous Databaseを使用してプロビジョニングされている場合、データベース・ウォレットの構成がデータソース(トラスト・ストアの場所、キーストアの場所など)に含まれます。これらのパラメータはfmw_change_to_tns_alias.shスクリプトによって変更されず、TNS別名を使用するかどうかは有効です。ウォレット・ディレクトリは、プロビジョニング中にOracle WebLogic Server for Oracle Cloud InfrastructureおよびOracle SOA Suite on Marketplaceによって作成され、すでにtnsnames.oraファイルが含まれています。OCIの自律型データベースUIからOracle Autonomous Databaseウォレットを取得することもできます。

    ノート:

    Oracle WebLogic Server for Oracle Cloud InfrastructureおよびOracle SOA Suite on Marketplaceで使用されるOracle Autonomous Databaseウォレットは、プロビジョニング時に管理サーバー・ノードにダウンロードされます。プライマリ・システムとスタンバイ・システムのウォレットを更新するには、Oracle Autonomous Database UIから再度ダウンロードし、$DOMAIN_HOME/config/jdbcディレクトリおよび$DOMAIN_HOME/config/fmwconfigの下のjps configファイルでウォレット・パスワードを更新します。プライマリ、スタンバイおよびリフレッシュ可能クローンのウォレットに同じパスワードを使用すると、両方のサイトでのデータソース構成の操作が容易になりますが、次に示すスクリプトは異なるパスワードを処理できます。fmwadb_switch_db_conn.shスクリプトを使用して、システムを新しいウォレットで更新します。

    プライマリ・システムがプロビジョニングされたら、(プロビジョニング画面で)Oracle Autonomous Databaseサービス・レベルのいずれかを選択します。同じサービス・レベルでfmw_change_to_tns_alias.shスクリプトを実行します。Oracle Autonomous DatabaseのDBサービスのサービス・レベルは、low、mid、high tp、tpurgentです。次に、Oracle Fusion MiddlewareをTNS別名に変更する例を示します。

    [oracle@soarefr-soa-0 ~]$ grep url /u01/data/domains/soarefr_domain/config/fmwconfig/jps-config.xml
    <property name="jdbc.url" value="jdbc:oracle:thin:@(description=(retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))"/>
    [oracle@soarefr-soa-0 ~]$ grep url /u01/data/domains/soarefr_domain/config/jdbc/opss-datasource-jdbc.xml
    <url>jdbc:oracle:thin:@(description=(retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))</url>
     
    NOTICE the "low" label in g914a2540e8ab6d_soaadb1_low.adb.oraclecloud.com, that is the service flag that will allow you identify the tns alias that needs to be used
     
    [oracle@soarefr-soa-0 good]$ cat $DOMAIN_HOME/config/atp/tnsnames.ora | grep low | awk -F '=' '{print $1}'
    soaadb1_low
     
    [oracle@soarefr-soa-0 good]$ ./fmw_change_to_tns_alias.sh soaadb1_low                                                                                          
    Getting variables from current datasource ...............
    An existing tns_admin property was found in /u01/data/domains/soarefr_domain/config/jdbc/opss-datasource-jdbc.xml and will be used
    Found soaadb1_low  as tns_alias
    No modifications will be required in /u01/data/domains/soarefr_domain/config/atp/tnsnames.ora
    *******************WILL USE THESE SETTINGS********************
    **************************************************************
    TNS admin:........................./u01/data/domains/soarefr_domain/config/atp
    TNS alias:........................ soaadb1_low
    Current connect string:............(description=(retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    Current jps connect string:........(description=(retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    Current tnsnames.ora:..............
    soaadb1_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    soaadb1_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    soaadb1_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    soaadb1_tp = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    soaadb1_tpurgent = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_tpurgent.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    **************************************************************
    Taking backup of existing config...
    ************** Replacing DB connect information **************
    Replacing jdbc url in config/jdbc files...
    Replacing jdbc url in config/fmwconfig files...
    Replacement complete!
     
    [oracle@soarefr-soa-0 ~]$ grep url $DOMAIN_HOME/config/fmwconfig/jps-config.xml
    <property name="jdbc.url" value="jdbc:oracle:thin:@soaadb1_low "/>
    [oracle@soarefr-soa-0 ~]$ grep url /u01/data/domains/soarefr_domain/config/jdbc/opss-datasource-jdbc.xml
        <url>jdbc:oracle:thin:@soaadb1_low </url>
    <property name="jdbc.url" value="jdbc:oracle:thin:@soaadb1_low "/>
    [oracle@soarefr-soa-0 ~]$
  3. ドメイン内のすべてのOracle WebLogic Serversを再起動して、スクリプトによって実行される変更を使用します。

セカンダリ・リージョンでのVCNおよびサブネットの作成

まだ行っていない場合は、プライマリ・リージョンのCIDRと競合しないCIDRを使用して、スタンバイ・リージョンにVCNを作成します。たとえば、プライマリVCNで10.1.0.0/16を使用する場合、セカンダリVCNでは10.2.0.0/16を使用できます。

  1. セカンダリ・リージョンにVCNおよびサブネットを作成します。
    関連するクラウド・サービスのグループをプロビジョニングするクラウド・スタックを作成できます。
  2. セキュリティ・リストで層間の適切な通信が許可されていることを確認します。

    次の通信を確認します。

    • OCIロード・バランサからWebLogicサーバーへ
    • WebLogicサーバーからデータベースへ
    • WebLogicサーバーから共有ストレージへ

    また、作成後にDynamic Routing Gateway (DRG)を介した管理サーバー・ノード間の通信を許可するために必要なルールを含めます。

プライマリとセカンダリVCN間でのDRGの構成

障害時リカバリの設定では、プライマリおよびセカンダリOracle WebLogic Server管理ノードが相互に通信し、Oracle Cloud Infrastructure File Storageのコピーを介してドメイン構成を受信する必要があります。そのためには、中間層のVCN間に動的ルーティング・ゲートウェイ(DRG)を作成する必要があります。

  1. 中間層のVCN間にDRGを作成します。
  2. 選択したコンパートメントまたはリージョンの「Dynamic Routing Gateways」ページに新しいDRGが表示されることを確認します。
    DR設定スクリプトは、必要な接続を確立できることを確認します。
  3. ミッドティア間のSSH接続を許可するように、プライマリとスタンバイのVCNで適切なルートとセキュリティ・ルールを構成します。
  4. プライマリのOracle WebLogic Administration Serverノードからセカンダリ内のOracle WebLogic Administration ServerノードへのSSH接続を確立できることを確認します。
    たとえば、10.2.1.104がセカンダリの管理サーバー・ノードのIPである場合、プライマリの管理サーバー・ノードから次を実行します。
    [opc@soarefr-soa-0 ~]$ ssh -i KeySOAMAA.ppk opc@10.2.1.104
    Last login: Wed Dec 14 16:59:15 2022 from 10.2.0.83
    [opc@soarefr-soa-0 ~]$

セカンダリ・リージョンでのOracle Autonomous Data Guardスタンバイの作成

既存のプライマリOracle Autonomous Databaseのスタンバイ・データベースを作成します。

  1. Oracle Autonomous Database Serverlessの場合は、セカンダリ・リージョンにスタンバイOracle Autonomous Database Serverlessを作成します。
    1. OCIコンソールで、左側のナビゲーション・メニューの「Oracle Database」をクリックして、プライマリOracle Autonomous Databaseに移動します。
    2. 「Autonomous Databaseの詳細」ページの「リソース」の下で、「ディザスタ・リカバリ」をクリックし、「ピア・データベースの追加」をクリックします。
    3. 前に作成したVCNおよびプライベート・サブネットを使用します。
  2. 専用Exadata InfrastructureOracle Autonomous Database on Dedicated Exadata Infrastructure上のOracle Autonomous Databaseの場合
    1. OCIコンソールで、Autonomous Container Databaseの詳細ページに移動し、「リソース」セクションでAutonomous Data Guardアソシエーション・リソースを選択します。
    2. 「Autonomous Data Guardの有効化」をクリックします。
    3. ピアAutonomous VMクラスタ情報、保護モードおよび自動フェイルオーバーの選択を入力します。必要なすべての情報を入力したら、「Autonomous Data Guardの有効化」をクリックします。
      このワークフローの一部として、選択したAutonomous VMクラスタ内のすべてのスタンバイ自律型データベースを使用して、新しいスタンバイAutonomous Container Databaseが作成されます。

DR設定のためのスタンバイAutonomous Databaseの準備

このタスクは、スナップショット・スタンバイまたはリモート・リフレッシュ可能クローンのどちらのアプローチを使用しているかによって異なります。

スナップショット・スタンバイのアプローチについては、スタンバイをスナップショット・スタンバイに変換を参照してください。

リモート・リフレッシュ可能クローンのアプローチについては、セカンダリ・リージョンでのリモート・リフレッシュ可能クローンの作成を参照してください。

スタンバイをスナップショット・スタンバイに変換

スナップショット・スタンバイのアプローチを使用して、スタンバイ自律型データベースをスナップショット・スタンバイに変換します。

  1. Oracle Cloud Infrastructure Consoleの左側のナビゲーション・メニューから、「Autonomous Database」をクリックします。
  2. セカンダリ・リージョンで、スタンバイAutonomous Databaseを選択します。
  3. 「他のアクション」ドロップダウン・リストから、「スナップショット・スタンバイ・データベースに変換」をクリックします。
  4. 専用インフラストラクチャを使用している場合は、「プライマリ・データベース・サービスの使用」を選択します。

ノート:

Oracle Dedicated Exadata Infrastructureのスナップショット・スタンバイが7日以内にフィジカル・スタンバイに変換されない場合、スナップショット・スタンバイは自動的にフィジカル・スタンバイに変換されます。

Oracle Autonomous Database Serverlessのスナップショット・スタンバイが2日以内にフィジカル・スタンバイに変換されない場合、スナップショット・スタンバイは自動的にフィジカル・スタンバイに変換されます。

セカンダリ・リージョンでのリモート・リフレッシュ可能クローンの作成

リモート・リフレッシュ可能クローン・アプローチを使用して、リモート・リージョンの既存のプライマリOracle Autonomous Database Serverlessからリフレッシュ可能クローンを作成します。

  1. 既存のプライマリOracle Autonomous Database Serverlessからリフレッシュ可能クローンを作成します。
    リフレッシュ可能クローンをVCN内のセカンダリ(リモート)リージョンと、以前に作成したプライベート・サブネットに配置します。

    ノート:

    プライマリと同じDB名はフィジカル・スタンバイですでに使用されているため、プライマリと同じDB名を使用できません。
  2. Private Endpoint Access Onlyを使用してデータベースにアクセスします。

    リフレッシュ可能クローンは、作成後も接続されたまま読取り専用モードになります。Oracle WebLogic ServerOracle SOAおよびOracle Fusion Middlewareシステムは、読取り/書込み(プライマリから切断)に変換されたUNLESSに対してプロビジョニングできません。

  3. プライマリ自律型データベースからリフレッシュ可能クローンを切断し、読取り/書込みモードに変換します。

    ノート:

    リモート・リフレッシュ可能クローンは、24時間以上切断されたままにできません。たとえば、リモート・リフレッシュ可能クローン・データベースを指すセカンダリ中間層の作成に24時間以上かかることはできません。
    1. Oracle Cloud Infrastructure左ナビゲーション・メニューから、「Autonomous Database」をクリックします。
    2. リフレッシュ可能クローン名を選択します。
    3. ソース・データベースを選択し、「切断」をクリックします。

セカンダリ・システムのプロビジョニング

セカンダリ・Oracle WebLogic Server for Oracle Cloud InfrastructureOracle SOA Suite on Marketplaceまたはその他の中間層Oracle Cloud Infrastructure (OCI)サービスをプロビジョニングします。このサービスは、セカンダリ・データベースを指すOracle Fusion Middleware (システム) (スナップショット・スタンバイ・アプローチの場合)またはリフレッシュ可能クローン(リモート・リフレッシュ可能クローンのアプローチの場合)を使用します。

  1. ディザスタ・リカバリの標準サブネット、CIDR、セキュリティ・ルールおよびインスタンス・接頭辞の推奨事項に従います。

    スタック名は異なる場合がありますが、プライマリ・ロケーションで使用したものと同じリソース名接頭辞EXACTを使用する必要があります。Oracleでは、理想的なフェイルオーバー/スイッチオーバー動作のために、プライマリとスタンバイの両方の場所でまったく同じ容量とコンピュート構成を使用することをお薦めします。

    セカンダリ・ロケーションにプロビジョニングされるOracle WebLogic Server for OCIのバージョンおよびパッチ・レベルが、プライマリ・サイトで実行されているバージョンと一致していることを確認してください。

    詳細は、『Oracle WebLogic Server for Oracle Cloud Infrastructureディザスタ・リカバリ』の「セカンダリ・サイトでのOCI用WLSのプロビジョニング」セクションまたは『Oracle Cloud Infrastructure Marketplaceディザスタ・リカバリ上のSOA Suite on Marketplace』の「セカンダリ・サイトでのOCI用WLSのプロビジョニング」セクションで設定されたDRのプロビジョニング・ウィザード・オプションの概要を示す表を参照してください。

  2. 標準プロビジョニング・プロセスに従って、セカンダリ中間層システムを作成します。
  3. Oracle Fusion Middleware URL (コンソール、soa-infraなど)を使用する標準のOracle WebLogic Server for Oracle Cloud InfrastructureOracle SOA Suite on Marketplace、またはその他の中間層Oracle Cloud Infrastructure (OCI)サービスをチェックして、システムが適切に作成されていることを確認します。
  4. 検証後、スタンバイのOracle WebLogicプロセス(管理対象サーバー、管理サーバーおよびノード・マネージャ)を停止します。
  5. リモート・リフレッシュ可能クローンを使用している場合は、ソースに再接続できます。スナップショット・スタンバイを使用している場合は、再度フィジカル・スタンバイに変換できます。
    DR設定が完了するまで、Oracle WebLogicプロセスをセカンダリで起動しないでください。

セカンダリTNS別名接続文字列の変更

セカンダリ・システムで使用される別名をプライマリ・システムと同じ別名に変更してください。

プライマリ・システムと同様に、$DOMAIN_HOME/config/jdbcの下のすべてのデータソース・ファイルおよび$DOMAIN_HOME/config/fmwconfigの下にあるjps configファイルで、透過的ネットワーク・サブストレート(TNS)別名を使用する必要があります。セカンダリ(スタンバイ)システムで使用される別名は、プライマリ・システムと同じになります。これは、前に作成した別名を含むプライマリからデータソースがレプリケートされるためです。

このタスクは、スナップショット・スタンバイまたはリモート・リフレッシュ可能クローンのどちらのアプローチを使用しているかによって異なります。

スナップショット・スタンバイ・アプローチのセカンダリTNS別名接続文字列の変更

スナップショット・スタンバイのアプローチでは、tnsnames.oraファイルの別名はプライマリと同じであることが予想されます(ただし、接続文字列はスタンバイ・データベースのアドレスを指しています)。変更する必要はありません。

  1. tnsnames.oraファイル内の文字列がデュアル(ローカルおよびリモートの両方の自律型データベース・ホストを含む)の場合、Oracleでは、ローカル・データベースのみを指すように文字列を変更することをお薦めします。
    これは、専用インフラストラクチャでOracle Autonomous Databaseを使用している場合に発生します。スタンバイのtnsnames.oraファイルは構成レプリケーションやその他のライフサイクル操作によって変更されないため、この変更は1回のみ行う必要があります。

    tnsnames.oraファイル内のエントリが2つの例を次に示します。

    adbd1_tp=(DESCRIPTION =(CONNECT_TIMEOUT = 90)(RETRY_COUNT = 50)(RETRY_DELAY = 3)(TRANSPORT_CONNECT_TIMEOUT = 3)(ADDRESS_LIST =(LOAD_BALANCE = ON)(ADDRESS = (PROTOCOL=TCP)(HOST= host-kyzm3-scan.secondarysubnet.secondaryvcn.oraclevcn.com)(PORT=1521)) (ADDRESS = (PROTOCOL=TCP)(HOST=host-xwgo9-scan.primarysubnet.primaryvcn.oraclevcn.com)(PORT=1521)) )(CONNECT_DATA = (SERVICE_NAME = ADBD1_tp.atp.oraclecloud.com)))
    
    adbd1_medium=(DESCRIPTION =(CONNECT_TIMEOUT = 90)(RETRY_COUNT = 50)(RETRY_DELAY = 3)(TRANSPORT_CONNECT_TIMEOUT = 3)(ADDRESS_LIST =(LOAD_BALANCE = ON)(ADDRESS = (PROTOCOL=TCP)(HOST=host-kyzm3-scan.secondarysubnet.secondaryvcn.oraclevcn.com)(PORT=1521)) (ADDRESS = (PROTOCOL=TCP)(HOST=host-xwgo9-scan.primarysubnet.primaryvcn.oraclevcn.com)(PORT=1521)) )(CONNECT_DATA = (SERVICE_NAME = ADBD1_medium.atp.oraclecloud.com)))
    
    adbd1_tpurgent=(DESCRIPTION =(CONNECT_TIMEOUT = 90)(RETRY_COUNT = 50)(RETRY_DELAY = 3)(TRANSPORT_CONNECT_TIMEOUT = 3)(ADDRESS_LIST =(LOAD_BALANCE = ON)(ADDRESS = (PROTOCOL=TCP)(HOST=host-kyzm3-scan.secondarysubnet.secondaryvcn.oraclevcn.com)(PORT=1521)) (ADDRESS = (PROTOCOL=TCP)(HOST=host-xwgo9-scan.primarysubnet.primaryvcn.oraclevcn.com)(PORT=1521)) )(CONNECT_DATA = (SERVICE_NAME = ADBD1_tpurgent.atp.oraclecloud.com)))
    …
  2. デュアル・エントリがある場合は、リモート・データベースのADDRESSを削除して、ローカルAutonomous Databaseのみを指すように変更します。

    セカンダリ内のtnsnames.oraファイルには、スタンバイ・データベースのADDRESSのみを含める必要があります。次に例を示します。

    adbd1_tp=(DESCRIPTION =(CONNECT_TIMEOUT = 90)(RETRY_COUNT = 50)(RETRY_DELAY = 3)(TRANSPORT_CONNECT_TIMEOUT = 3)(ADDRESS_LIST =(LOAD_BALANCE = ON)(ADDRESS = (PROTOCOL=TCP)(HOST= host-kyzm3-scan.secondarysubnet.secondaryvcn.oraclevcn.com)(PORT=1521)))(CONNECT_DATA = (SERVICE_NAME = ADBD1_tp.atp.oraclecloud.com)))
    
    adbd1_medium=(DESCRIPTION =(CONNECT_TIMEOUT = 90)(RETRY_COUNT = 50)(RETRY_DELAY = 3)(TRANSPORT_CONNECT_TIMEOUT = 3)(ADDRESS_LIST =(LOAD_BALANCE = ON)(ADDRESS = (PROTOCOL=TCP)(HOST=host-kyzm3-scan.secondarysubnet.secondaryvcn.oraclevcn.com)(PORT=1521)))(CONNECT_DATA = (SERVICE_NAME = ADBD1_medium.atp.oraclecloud.com)))
    
    adbd1_tpurgent=(DESCRIPTION =(CONNECT_TIMEOUT = 90)(RETRY_COUNT = 50)(RETRY_DELAY = 3)(TRANSPORT_CONNECT_TIMEOUT = 3)(ADDRESS_LIST =(LOAD_BALANCE = ON)(ADDRESS = (PROTOCOL=TCP)(HOST=host-kyzm3-scan.secondarysubnet.secondaryvcn.oraclevcn.com)(PORT=1521)))(CONNECT_DATA = (SERVICE_NAME = ADBD1_tpurgent.atp.oraclecloud.com)))
    …

リモート・リフレッシュ可能クローン・アプローチのセカンダリTNS別名接続文字列の変更

リモート・リフレッシュ可能クローン・アプローチの場合は、セカンダリ・システムで使用される別名をプライマリ・システムと同じ別名に変更してください。

セカンダリOracle WebLogic Server for Oracle Cloud InfrastructureOracle SOA Suite on MarketplaceまたはOracle Fusion Middlewareシステム作成に含まれるtnsnames.oraファイルには、リモート・リフレッシュ可能クローン名に基づく別名が含まれます。たとえば、リモート・リフレッシュ可能クローンがsoaadb1rc2という名前で作成されている場合、(プロビジョニング中に作成されたウォレット・ディレクトリ内の)tnsnames.oraファイルには、 soaadb1rc2_highsoaadb1rc2_lowsoaadb1rc2_mediumsoaadb1rc2_tpsoaadb1rc2_tpurgentという別名が含まれます。構成を簡略化するには、プライマリ・システムとセカンダリ・システムの両方でtnsnames.oraファイルで同じ別名を使用する必要があるため、Oracle WebLogic Server for Oracle Cloud InfrastructureOracle SOA Suite on MarketplaceまたはOracle Fusion Middlewareドメインがプライマリと同じ別名を使用するように(リモート・リフレッシュ可能クローン)構成されているTNS別名を変更します。プライマリの別名を$tns_admin/tsnames.oraファイルから取得できます。サービスごとに異なる別名が作成され、すべてDB名から接頭辞が推測されます。サービスではなく別名のみを変更することに注意してください。tnsnames.oraファイルの接続文字列のサービス名も変更される可能性があるため、ファイルでグローバル検索および置換を使用しないでください。

  • プライマリ・システムと同じ別名を使用するように、セカンダリ・システムのtnsnames.oraファイルを変更します。

    次に、プライマリ・システムのOracle Autonomous Database Serverlessを使用したOracle Fusion Middleware構成のサンプルtnsnames.oraファイルを示します。

    [oracle@soarefr-soa-0 ~]$ cat $DOMAIN_HOME/config/tnsadmin/tnsnames.ora
    soaadb1_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_tp = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_tpurgent = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tpurgent.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))

    次に、リフレッシュ可能クローンを使用したセカンダリOracle Autonomous Database Serverlessを使用したOracle Fusion Middleware構成のサンプルtnsnames.oraファイルを示します。

    oracle@soarefr-soa-0 ~]$ cat $DOMAIN_HOME/config/tnsadmin/tnsnames.ora
    rcsoaadb1_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    rcsoaadb1_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    rcsoaadb1_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    rcsoaadb1_tp = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    rcsoaadb1_tpurgent = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_tpurgent.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))

    1回かぎりの操作であるため、リフレッシュ可能クローンの別名を変更する最も簡単な方法は、ファイルを編集することです。使用中のサービス・レベルの別名、または一貫性のためにすべての別名を変更できます。

    ノート:

    これは、新しいリフレッシュ可能クローンをテストまたは検証に使用し、新しいウォレットが使用されるたびに実行する必要があります。

    次に、プライマリの別名を使用したリフレッシュ可能クローンのセカンダリOracle Autonomous Database Serverlessを使用したOracle Fusion Middleware構成のサンプルtnsnames.oraファイルを示します。

    [oracle@soarefr-soa-0 ~]$ cat $DOMAIN_HOME/config/tnsadmin/tnsnames.ora
    soaadb1_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_tp = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
     
    soaadb1_tpurgent = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=rcsoaadb1.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_rcsoaadb1_tpurgent.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))

プライマリ・システムと同様に、$DOMAIN_HOME/config/jdbcおよび$DOMAIN_HOME/config/fmwconfigの下のjps構成ファイル内のすべてのデータソース・ファイルは、選択した別名を使用します。プライマリ・システム(lowmidhightpまたはtpurgent)と同じサービス・レベルがリモート・リフレッシュ可能クローンで選択されていることが期待されます。別名およびデータソースはプライマリ・システムからコピーされるため、セカンダリ・システムでfmw_change_to_tns_alias.shスクリプトを実行する必要はありません。障害回復の設定では、必要な交換が処理されます。

プライマリtnsnames.oraファイル内の他のデータベースを指す別名を追加する場合は、セカンダリ・システムのtnsnames.oraファイルにそれに応じて追加します。

プライマリおよびスタンバイ中間体でのホスト名別名およびフロントエンド・アドレスの更新

DR設定が完了すると、セカンダリ内のWebLogicドメイン構成がプライマリWebLogicドメインのコピーになります。 したがって、プライマリOracle WebLogic Servers (プライマリ・ホストのホスト名)によってリスニング・アドレスとして使用されるホスト名は、セカンダリ場所で有効である必要がありますが、セカンダリIPにマップする必要があります。

プライマリとスタンバイの両方で同じフロントエンド・アドレスを使用する必要があります。通常の操作中に、このフロントエンド・ホスト名はプライマリOracle Cloud Infrastructure (OCI) Load BalancerのIPにマップされます。セカンダリから(スイッチオーバーまたはフェイルオーバー後に)実行する場合、このフロントエンド・ホスト名はセカンダリOCI Load BalancerのIPにマップされます。

ノート:

スイッチオーバーまたはフェイルオーバーがある場合、中間層ホストの/etc/hostsファイルは変更しないでください。中間層ホストは、常にフロントエンドIPを使用して仮想フロントエンド名を解決します。スイッチオーバーおよびフェイルオーバー手順中に必要な DNS更新は、クライアントが使用する DNSまたはホストファイルで実行されます。

このホストエイリアシングは、次の方法で実装できます。

  • ホスト名を別名としてOracle WebLogic Server for OCIコンピュート・インスタンスの/etc/hostsファイルに追加します
  • セカンダリOCI VCNでのプライベートDNSビューの使用

/etc/hostsファイルを使用

プライマリOracle WebLogic Serverによって使用されるホスト名は、セカンダリOracle WebLogic Serverホストの/etc/hostsファイルに追加され、セカンダリOracle WebLogic ServerホストのIPアドレスを指しています。 このモードは、DNSサーバーがプライマリおよびセカンダリOracle Cloud Infrastructure (OCI)サイトで同じである場合、およびプライマリ・サイトとセカンダリ・サイトで分離されたDNSサーバーが使用されている場合にも有効です。/etc/hostsファイル内のエントリは、DNS解決よりも優先されます。これは、/etc/nsswitch.confファイルのディレクティブ「hosts」にデフォルトで定義されている優先順位であるためです。
  1. WebLogic Serverコンピュート・インスタンスの/etc/oci-hostname.confファイルを編集し、インスタンスの再起動後も/etc/hostsエントリを保持するようにプロパティPRESERVE_HOSTINFO=3を設定します。
  2. コマンドhostname --fqdnを使用して、OCI WebLogic Serverコンピュート・インスタンスの完全なホスト名を識別します。
  3. 中間層コンピュート・インスタンスの/etc/hostsファイルに次のエントリを追加します:
    #################################
    # ALIASES on OCI for DR
    #################################
    apphost1_compute_instance_IP  apphost1_fqdn   apphost1_hostname   ALIAS_OF_APPHOST1 
    apphost2_compute_instance_IP  apphost2_fqdn   apphost2_hostname   ALIAS_OF_APPHOST2 
    #################################
    # Frontend name 
    #################################
    IP_OF_LBR  frontend_name_fqdn
    次に、プライマリOracle WebLogic Serverホストの/etc/hostsファイルの例を示します。
    # Aliases for DR in primary region
    10.0.2.10 wlsociprefix-wls-0.subnetlon.vcnlon.oraclevcn.com wlsociprefix-wls-0 
    10.0.2.11 wlsociprefix-wls-1.subnetlon.vcnlon.oraclevcn.com wlsociprefix-wls-1
    
    # Front-end virtual name to primary LBR IP
    111.111.111.111 mywebapps.mycompany.com 

    次に、セカンダリOCI WebLogicサーバー・コンピュート・インスタンスの/etc/hostsファイルの例を示します。

    ノート:

    プライマリ・ホスト名はセカンダリ・ノードの別名として追加され、フロントエンド仮想名がセカンダリ・ロード・バランサIPを指しています:

    # Aliases for DR in secondary region
    10.1.2.5 wlsociprefix-wls-0.subnetfra.vcnfra.oraclevcn.com wlsociprefix-wls-0 wlsociprefix-wls-0.subnetlon.vcnlon.oraclevcn.com wlsociprefix-wls-0
    10.1.2.4 wlsociprefix-wls-1. subnetfra.vcnfra.oraclevcn.com wlsociprefix-wls-1 wlsociprefix-wls-1.subnetlon.vcnlon.oraclevcn.com wlsociprefix-wls-0
    
    # Front-end virtual name to secondary LBRIP
    222.222.222.222 mywebapps.example.com
    

OCIドメイン・ネーム・システム(DNS)の使用

プライマリOracle WebLogic Serverホストで使用されるホスト名は、セカンダリ中間層サーバーのVCNで使用されるDNSリゾルバに追加され、セカンダリOracle WebLogic ServerホストのIPアドレスを指しています。 このモードは、プライマリおよびセカンダリOracle Cloud Infrastructure (OCI)サイトで個別のDNSサーバーが使用されている場合に有効です。それ以外の場合、名前の解決で競合が発生する可能性があります。各サイトのサーバーは、これらの名前を独自のIPで解決する必要があります。この方法の利点は、すべてのOracle WebLogic Serverホストのすべての/etc/hostsに追加するのではなく、すべてのエントリをプライベートDNSビューに追加できることです。

セカンダリVCNでプライベート・ビューを作成し、セカンダリIPを持つプライマリによって使用されるホスト名を解決するステップは、次のとおりです:

  1. OCIコンソールで、セカンダリ・リージョンに移動し、プライベート・ビューを作成して、セカンダリIPアドレスを持つPRIMARYホストの名前を解決します。
    1. 「ネットワーキング」「DNS管理」「プライベート・ビュー」「プライベート・ビューの作成」の順にクリックします。
      たとえば、プライベート・ビューにPRIMARY_HOSTNAMES_PRIVATE_VIEWという名前を付けることができます。
    2. プライベート・ビューで「ゾーンの作成」をクリックします。
      ゾーン名には、ホストの完全なドメインを使用する必要があります。たとえば: subnetpri.vcnpri.oraclevcn.com
    3. このゾーンにプライマリ・ホスト名(短縮名)を追加しますが、セカンダリOracle WebLogic ServerホストのIPアドレスで解決されます。
    4. 「変更の発行」をクリックします。
  2. セカンダリVCNリゾルバにプライベート・ビューを追加します。
    1. VCNのDNSリゾルバ・リソースをクリックします。
    2. 前に作成したDNSプライベート・ビューを追加します。
      セカンダリVCN内のホストは、プライベート・ビューを使用してプライマリOracle WebLogic Serverホストで使用されるホスト名を解決します。
  3. ホスト名のpingおよびnslookupを実行して、解決SECONDARYホストを検証します。
    これらは同等のSECONDARY IPで解決する必要があります。

    ノート:

    このOCIプライベート・ビューおよびレコードを作成するTerraformコードは、GitHubにあります。

セカンダリ・システムの構成

システムをセカンダリとして構成するには、WebLogicサーバー・ドメイン構成をプライマリからセカンダリWebLogicサーバーOracle SOA SuiteまたはOracle Fusion Middlewareシステム・ドメインにコピーする必要があります。
障害回復(DR)設定は、ローカルで有効にしておく必要がある特定のディレクトリとファイルを除き、すべてのセカンダリドメインを置き換えます。これらのディレクトリはスクリプトによって明示的に除外されます。また、このスクリプトによってデータソース・ファイルが置換されるため、セカンダリはプライマリと同じDBスキーマ名を使用しますが、既存のjdbc urlはローカル・データベースを指し示しています(スイッチオーバーの準備としてDRの設定時およびスタンバイ時にリフレッシュ可能クローン)。
  1. プライマリのWebLogicサーバー管理ノードでfmwadb_dr_prim.shスクリプトを実行します。
    スクリプトは、Dynamic Routing Gatewayを介してWebLogicサーバー管理サーバー・ノード間の接続をチェックし、セカンダリ・リージョンのOracle Cloud Infrastructure File Storageマウント内のステージング・ディレクトリにドメインをコピーします。

    次のパラメータを使用します。

    • REMOTE_ADMIN_NODE_IP

      セカンダリ WebLogic Server管理サーバーノードのIPアドレス。

      このIPは、このホスト(プライマリOracle WebLogic Server管理サーバー・ノード)からアクセス可能である必要があります。

      Dynamic Routing Gatewayを使用してプライマリ・サイトとセカンダリ・サイトを相互接続し、プライベートIPアドレスを指定することをお薦めします。

    • REMOTE_SSH_PRIV_KEYFILE

      リモートのOracle WebLogic管理サーバー・ノードに接続するための秘密SSHキーファイル。

    • FSS_MOUNT

      WebLogicサーバー・ドメイン構成のコピーをステージングするために使用されるOCI File Storageマウント・ディレクトリ。

    ./fmwadb_dr_prim.sh [REMOTE_ADMIN_NODE_IP] [REMOTE_SSH_PRIV_KEYFILE] [FSS_MOUNT]
    次に、コマンドと出力の例を示します。
    [oracle@soarefr-soa-0 ~]$ ./fmwadbs_dr_prim.sh '10.2.1.104' '/u01/soacs/dbfs/share/KeyWithoutPassPhraseSOAMAA.ppk' /u01/soacs/dbfs/share/
     Checking ssh connectivity to remote WebLogic Administration server node....
        Connectivity to 10.2.1.104 is OK
        REMOTE_ADMIN_HOSTNAME...... soarefr-soa-0.sub09051735411.soaadbvcnstby.oraclevcn.com
     Checking local FSS mount folder readiness........
         The FSS is expected to be mounted in /u01/soacs/dbfs/share
         The folder for the copy of the domain is expected to be /u01/soacs/dbfs/share/domain_config_copy
         Local folder /u01/soacs/dbfs/share/domain_config_copy exists.
     Checking remote FSS mount folder readiness........
         Remote folder 10.2.1.104:/u01/soacs/dbfs/share/domain_config_copy exists.
     
    ----------- Rsyncing from local domain to local FSS folder ---------------
     
    Local rsync output to /u01/soacs/dbfs/share/domain_config_copy/last_primary_update_local_06-10-2022-09-47-50.log ....
    Source and target directories are in sync. ALL GOOD!
     
    ----------- Local rsync complete -----------------------------------------
     
    ----------- Rsyncing from local FSS folder to remote site... --------------
    Remote rsync output to /u01/soacs/dbfs/share/domain_config_copy/last_primary_update_remote_06-10-2022-09-47-50.log ....
    Source and target directories are in sync. ALL GOOD!
  2. fmwadb_dr_prim.shスクリプトの実行が終了すると、まだ停止していない場合は、セカンダリ・システム内のすべてのWebLogicサーバー・システムおよびノード・マネージャを停止します。
  3. セカンダリの管理ノードWebLogicサーバーにログインし、fmwadb_dr_stby.shスクリプトを実行します。

    このスクリプトは、WebLogicサーバー・ドメインをOCIファイル・ストレージ・マウントのステージング・ディレクトリからセカンダリWebLogicサーバー・ドメイン・ディレクトリにコピーし、必要なウォレットとパスワードのエントリを置き換えます。提供するウォレットはリフレッシュ可能クローンであるため、最初のDR設定後にセカンダリを検証できます。

    次のパラメータを使用します。

    • WALLET_DIR

      解凍されたOracle Autonomous Databaseウォレットのディレクトリ。WebLogicサーバー管理サーバー・ノード。

      このディレクトリには、少なくともtnsnames.orakeystore.jksおよびtruststore.jksファイルが含まれている必要があります。

      スナップショット・スタンバイ・アプローチを使用している場合、これはtnsadminフォルダのみです。

    • WALLET_PASSWORD

      ウォレットがOracle Autonomous Database Serverless OCI UIからダウンロードされたときに指定されたパスワード。

      ウォレットが、プロビジョニング時にWebLogicサーバーOracle SOA SuiteまたはOracle Fusion Middlewareシステムによって作成された最初のウォレットである場合。これを取得するには、次のコマンドを使用します。

      Oracle SOA:
      python /opt/scripts/atp_db_util.py generate-atp-wallet-password
      
      Oracle WebLogic Server:
      python3 /opt/scripts/atp_db_util.py generate-atp-wallet-password
    • FSS_MOUNT

      WebLogicサーバー・ドメイン構成のステージングに使用されるOCI File Storageマウント・ディレクトリ。

    ./fmwadb_dr_stby.sh [WALLET_DIR] [WALLET_PASSWORD] [FSS_MOUNT]
    次に、コマンドの実行および出力の例を示します。
    [oracle@wsladbs2-wls-0 scripts]$ ./fmwadb_dr_stby.sh /u01/data/domains/wsladbs2_domain/config/atpwallet/  7f3e3ed8ee7921fed058b481298eca55 /u01/shared/
    Backing up current domain...
    Backup created at /u01/data/domains/wsladbs2_domain/ /u01/data/domains/wsladbs2_domain_backup_11_42_19-26-10-22
    Rsyncing from FSS  mount to domain dir...
     Syncing the Weblogic Administration server node...
    Rsync complete!
    Switching config to /u01/data/domains/wsladbs2_domain/config/atpwallet/
    The password provided for the wallet is valid. Proceeding...
    Gathering Data Soure information...
    The new wallet is the same as the one being used.
    Will maintain existing wallet dir and just replace password
    Backing up current config...
    Backup created at  /u01/data/domains/wsladbs2_domain/DS_backup_11_42_33-26-10-22
    Replacing values in datasources...
    Replacement complete!
  4. セカンダリ・リージョンの他のWebLogic Server管理対象サーバー・ノードでfmwadb_dr_stby.shスクリプトを実行します。
  5. スタンバイ・データベースが読取り- 書込みモードでアクセス可能であることを確認してください。
    • スナップショット・スタンバイ・アプローチを使用している場合は、スタンバイ・データベースがスナップショット・スタンバイ・データベースに変換されていることを確認して、読取り/書込みモードでアクセスできるようにします。
    • リモート・リフレッシュ可能クローン・アプローチを使用している場合は、ソースから切断されていることを確認して、読取り/書込みモードでアクセスできるようにします。
  6. ノード・マネージャおよびOracle WebLogic Administration Serverをセカンダリで起動します。コンソールにアクセスして、ドメイン内のWebLogic Server管理対象サーバーを起動します。
  7. プライマリ内の既存のアプリケーションおよびデプロイメントがセカンダリでも使用できることを確認します。
  8. セカンダリで WebLogic Serverをシャットダウンします。
  9. スタンバイをフィジカル・スタンバイに変換するか、リフレッシュ可能クローンを再接続します。
    • スナップショット・スタンバイ・アプローチを使用している場合は、スタンバイ・データベースを物理スタンバイ・データベースに変換します。

    • リモート・リフレッシュ可能クローンを使用している場合は、リフレッシュ可能クローンを再接続します。リマインダ: リフレッシュ可能クローンは、24時間以上プライマリから切断したままにできません。

システムをスイッチオーバー準備完了のままにする

リフレッシュ可能クローンを使用してセカンダリ・システムを構成および検証した後、TNS別名をスタンバイOracle Autonomous Database Serverlessに指定して、システムをスイッチオーバーする準備ができたままにします。

ノート:

このタスクは、セカンダリシステムがリモートリフレッシュ可能クローンで構成および検証されている場合にのみ必要です。

セカンダリ・データベース・ユーザー・インタフェースからスタンバイ・データベースのウォレットをダウンロードします。リモートDRの場合、デュアル接続文字列(プライマリホストとスタンバイホストの両方)は不要な再試行を引き起こすため避けてください。

  1. スタンバイ・データベースのOracle Autonomous Database Serverlessユーザー・インタフェースにログインします。
  2. 「Autonomous Database」をクリックし、autonomous_db_nameを選択して「DB接続」をクリックし、「Walletのダウンロード」をクリックします。
  3. ウォレットにプライマリを指す二重文字列が含まれている場合は、接続文字列がセカンダリ・リージョンのローカルDBにのみ指すように、tnsnames.oraファイルからプライマリ説明のエントリを削除します。

    tnsnames.oraファイルの変更例を次に示します。

    soaadb1_high = (description_list= (failover=on) (load_balance=off) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_high.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-mumbai-1.oraclecloud.com, OU=Oracle ADB INDIA, O=Oracle Corporation, L=Redwood City, ST=California, C=US"))) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))))
    soaadb1_low = (description_list= (failover=on) (load_balance=off) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_low.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-mumbai-1.oraclecloud.com, OU=Oracle ADB INDIA, O=Oracle Corporation, L=Redwood City, ST=California, C=US"))) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))))
    soaadb1_medium = (description_list= (failover=on) (load_balance=off) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_medium.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-mumbai-1.oraclecloud.com, OU=Oracle ADB INDIA, O=Oracle Corporation, L=Redwood City, ST=California, C=US"))) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))))
    soaadb1_tp = (description_list= (failover=on) (load_balance=off) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tp.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-mumbai-1.oraclecloud.com, OU=Oracle ADB INDIA, O=Oracle Corporation, L=Redwood City, ST=California, C=US"))) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))))
    soaadb1_tpurgent = (description_list= (failover=on) (load_balance=off) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbvcn.adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tpurgent.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-mumbai-1.oraclecloud.com, OU=Oracle ADB INDIA, O=Oracle Corporation, L=Redwood City, ST=California, C=US"))) (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tpurgent.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))))
    
    SHOULD BE
    
    soaadb1_high = (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=no))) 
    soaadb1_low = (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    soaadb1_medium = (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    soaadb1_tp = (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tp.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
    soaadb1_tpurgent = (description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=soaadbstby.adb.ap-hyderabad-1.oraclecloud.com))(connect_data=(service_name=g914a2540e8ab6d_soaadb1_tpurgent.adb.oraclecloud.com))(security=(ssl_server_dn_match=no)))
  4. ウォレットをセカンダリ・リージョンのWebLogicサーバー管理サーバー・ノードの一時フォルダにコピーし、ディレクトリに移動します。
    [oracle@wsladbs2-wls-0 scripts]$ cd /tmp
    [oracle@wsladbs2-wls-0 tmp]$ mkdir wallet-stby
    [oracle@wsladbs2-wls-0 tmp]$ cd wallet-stby/
  5. ウォレットを解凍します。
    [oracle@wsladbs2-wls-0 wallet-stby]$ unzip /tmp/Wallet_soaadb1-standby.zip
    Archive:  ../Wallet_soaadb1-standby.zip
      inflating: ewallet.pem
      inflating: README
      inflating: cwallet.sso
      inflating: tnsnames.ora
      inflating: truststore.jks
      inflating: ojdbc.properties
      inflating: sqlnet.ora
      inflating: ewallet.p12
      inflating: keystore.jks
  6. fmwadb_switch_db_conn.shスクリプトを実行して、中間層をセカンダリ・ウォレットおよび接続文字列で準備したままにします。

    次に、スタンバイOracle Autonomous Database Serverlessウォレットを指すように実行されるスクリプトの例を示します:

    [oracle@wsladbs2-wls-0 scripts]$ ./fmwadb_switch_db_conn.sh /tmp/wallet-stby/ wallet_password
    The password provided for the wallet is valid. Proceeding...
    Gathering Data Source information...
    The new wallet is the same as the one being used.
    Will maintain existing wallet dir and just replace password
    Backing up current config...
    Backup created at  /u01/data/domains/wsladbs2_domain/DS_backup_10_38_32-27-10-22
    Replacing values in datasources...
    Replacement complete!

進行中の構成レプリケーションの設定

システムのライフサイクルにドメイン・ファイル・システムの頻繁な更新が含まれている場合は、スクリプトを使用して構成レプリケーション・プロセスを自動化できます。fmwadb_config_replica.shスクリプトは、Oracle Cloud Infrastructure File Storage (OCI File Storage)ステージ・ディレクトリを介して定期的に変更をレプリケートします。

各レプリケーションの後、構成はスイッチオーバーの準備ができています(準備されています)。

リモート・リフレッシュ可能クローンを使用している場合は、レプリケートされた構成が(リフレッシュ可能クローンではなく)フィジカル・スタンバイに「適応」されると想定されます。リフレッシュ可能クローンを使用した検証またはテストが必要な場合は、かわりにリフレッシュ可能クローンを指すようにスタンバイ・ドメイン構成を変更できます。

構成をレプリケートするには、WebLogicサーバー管理ノード(プライマリとスタンバイの両方)でfmwadb_config_replica.shスクリプトを実行する必要があります。通常、このスクリプトは、Oracle Autonomous Databaseシステム上のプライマリとスタンバイのWebLogicサーバーOracle SOA SuiteまたはOracle Fusion Middlewareシステムの間で構成を定期的にレプリケートするために、cronジョブでスケジュールされます。このスクリプトは、ローカル・データベースの現在のロールをチェックして、プライマリ・サイトまたはスタンバイ・サイトで実行されているかどうかを確認します。

  • スクリプトがPRIMARYサイトで実行されると、ドメイン構成がプライマリ・ドメインからローカル・アシスタンス・フォルダ(FSS)にコピーされ、その後(rsyncを介して)セカンダリ・サイト・アシスタンス・フォルダにコピーされます。
  • スクリプトがSTANDBYサイトで実行されると、セカンダリ・アシスタンス・フォルダ(OCI File Storage)からセカンダリ・ドメインにドメイン構成がコピーされ、データソースがローカル・データベースと連携するために必要な置換が行われます。

セキュリティ上の理由から、OCIコンソールから様々なパラメータを収集し、Oracle Autonomous Databaseウォレットにアクセスするためのパスワードを暗号化する必要があります。

スクリプトで使用される変数とその取得方法の説明を次に示します。

  • REMOTE_WLSADMIN_NODE_IP

    ピアおよびリモートの WebLogic Server管理サーバーノードのIP。

    これは、ピア・サイトのWebLogicサーバー管理サーバー内のノード・ホストのIPです。ローカル・ノードからアクセス可能である必要があります。Dynamic Routing Gatewayを使用してノードのリモート・プライベートIPに接続することをお薦めします。

  • REMOTE_SSH_PRIV_KEYFILE

    リモートOracle WebLogic管理サーバー・ノードに接続するための秘密SSHキーファイル。

  • TENANCY_OCID

    Oracle Autonomous Databaseが存在するテナンシのOCID。OCIDは、Oracle Cloud Infrastructure (OCI)ユーザー・インタフェース(UI)から取得できます。

  • USER_OCID

    自律型データベース・インスタンスを所有するユーザーのOCID。OCIDはOCI UIにあります。

  • PRIVATE_KEY

    このユーザーの秘密PEMフォーマット・キーへのパス。

  • LOCAL_ADB_OCID

    検査されるOracle Autonomous DatabaseのOCID。OCIDは、OCIコンソールのOracle Autonomous Database画面にあります。

  • WALLET_DIR

    ローカルOracle Autonomous Databaseウォレットのディレクトリ(OCIコンソールからダウンロードしたウォレットを解凍します)。このディレクトリには、少なくともtnsnames.orakeystore.jksおよびtruststore.jksファイルが含まれている必要があります。スナップショット・スタンバイ・アプローチを使用する場合、これはtnsadminフォルダです

  • ENC_WALLET_PASSWORD

    ウォレットがOracle Autonomous Database OCI UIからダウンロードされたときに指定されたパスワードのWLS ENCRYPTEDインカネーション。

    ウォレットがWebLogicサーバーOracle SOA SuiteまたはOracle Fusion MiddlewareによってWebLogicサーバーのプロビジョニング中に作成された最初のウォレットである場合、次のコマンドを使用してパスワードを取得できます:

    WebLogicの場合:
    [oracle@wsladbs2-wls-1 ~]$ python3 /opt/scripts/atp_db_util.py generate-atp-wallet-password
    SOAの場合:
    [oracle@soarefr-soa-0 ~]$ python /opt/scripts/atp_db_util.py generate-atp-wallet-password
    パスワードを暗号化するには、OCIコンソールで提供されているパスワードか、プロビジョニング中に使用されるパスワードかに関係なく、fmw_enc_pwd.shスクリプトを使用できます。
    ./fmw_enc_pwd.sh UNENC_WALLET_PASSWORD

    取得した文字列をENC_WALLET_PASSWORD変数に使用します。

  • FSS_MOUNT

    WebLogicサーバー・ドメイン構成のステージングに使用されるOCIファイル・ストレージ・マウント済ディレクトリ。

変数の情報を収集したら、次のステップを実行して、環境のスクリプトをコピーおよびカスタマイズします。

  1. セキュリティ上の理由から、Oracle Autonomous Databaseウォレットにアクセスするためのパスワードを暗号化します。
  2. スクリプトをプライマリ・サイトにコピーしてから、プライマリ・サイトに必要な変数を完成させるスクリプトを編集します。
    スクリプトで使用される変数の説明については、上記を参照してください。
  3. スクリプトをスタンバイ・サイトにコピーし、スタンバイ・サイトに必要な変数に入力するスクリプトを編集します。
    スクリプトで使用される変数の説明については、上記を参照してください。
  4. 各リージョン用にカスタマイズした後(各リージョンにローカル・データベースOCIDを指定する必要があります)、次のタスクを実行します:
    1. プライマリのOracle WebLogic管理ホストでスクリプトを実行します。
    2. セカンダリ・リージョンのOracle WebLogic管理ホストでスクリプトを実行します。
  5. 各リージョンのcronジョブにスクリプトを追加します。