環境の構成

OCIでセカンダリ・システムを設定し、プライマリ・オンプレミス・システムのスタンバイとして構成します。

スクリプトを使用して、いくつかのステップを自動化できます。これらのスクリプトは完全な設定を自動化しないため、タスクを完了し、参照時にスクリプトを使用できます。

リンクの「コードのダウンロード」に移動して、このドキュメントで参照されているスクリプトをダウンロードします。

プライマリ・データ・センターでのWebLogicデータ・ソースの準備

ディザスタ・リカバリ・トポロジのWebLogicデータ・ソースのデータベース接続文字列には、デュアル文字列、異なる接続文字列、TNS別名など、いくつかの方法を使用できます。 様々なアプローチの詳細と比較については、『Oracle Fusion Middlewareディザスタ・リカバリ・ガイド』を参照してください。TNS別名は1回かぎりの設定が必要なため、使用します。TNS別名を使用すると、セカンダリにコピーするたびにWebLogic構成を変更する必要がなくなります。GridLinkデータ・ソースでのTNS別名の使用は、FMWバージョン12.2.1.3の起動がサポートされています。

TNS別名がプライマリとセカンダリの同じ名前であるため、データソースで同じDB接続文字列が使用されます。これは、スタンバイにコピーされないtnsnames.oraファイルで解決されるため、サイトごとに異なるtnsnames.oraコンテンツを持つことができます。WebLogicドメイン構成とは別に、サイト間でレプリケートされないファイル・システムに配置できます。または、構成の一部である場合は、ドメイン構成の下のフォルダに格納することもできます。この場合、ドメイン構成をプライマリからスタンバイにコピーするときに、必ずそのフォルダを除外してください。各サイトでは、ローカル・データベースのみを指す、サイトごとに適切な接続文字列を使用して、TNS別名を解決します。例:

Connect string in data sources in primary site:
jdbc:oracle:thin:@soapdb

The tnsnames.ora file in primary contains:
SOAPDB =
(DESCRIPTION=
 (ADDRESS_LIST=
    (LOAD_BALANCE=ON)
    (ADDRESS=(PROTOCOL=TCP)(HOST=prmy-scan)(PORT=1521)))
    (CONNECT_DATA=(SERVICE_NAME=soapdb.example.com))
)

Connect string in data sources in secondary site:
jdbc:oracle:thin:@soapdb
The tnsnames.ora file in secondary: 
SOAPDB =
(DESCRIPTION=
 (ADDRESS_LIST=
    (LOAD_BALANCE=ON)
    (ADDRESS=(PROTOCOL=TCP)(HOST=stby-scan)(PORT=1521)))
    (CONNECT_DATA=(SERVICE_NAME=soapdb.example.com))
)

TNS別名を使用する利点は次のとおりです。

  • 同じdb接続文字列がWebLogicドメインconfigで使用されているため、configをプライマリからスタンバイにレプリケートした後にWebLogic構成を変更する必要はありません。
  • 各サイトがローカル・データベースのみを指しているため、中間層からリモート・データベースへの相互接続のリスクはありません。

このアプローチをプライマリSOAシステムでまだ使用していない場合は、次のステップを実行してデータ・ソースのTNS別名を使用します。

  1. プライマリ中間層ホストにtnsフォルダを作成します。

    このフォルダは、Oracleユーザーが読取り可能で、サイト間でレプリケートされないファイル・システムに配置する必要があります。

    tnsフォルダが構成の一部である場合は、すべてのサーバーで共有されるconfigフォルダの下に作成することもできます。ただし、その場合は、ドメイン構成をプライマリからスタンバイにコピーするとき、またはフェイルオーバーまたはスイッチオーバー後にセカンダリ・データベースを指すようにスタンバイ・システムのtnsnames.oraを更新するときに、tnsフォルダを除外してください。

    [oracle@host3 ~]$ mkdir -p /home/oracle/tnsnames_dir
    [oracle@host4 ~]$ mkdir -p /home/oracle/tnsnames_dir
  2. 例に示すように、データ・ソースで使用されるTNS別名でディレクトリにtnsnames.oraファイルを作成します。
    Oracleでは、文字列を1行に入力することをお薦めします。
    SOAPDB = 
    (DESCRIPTION=
      (ADDRESS_LIST=
        (LOAD_BALANCE=ON)
        (ADDRESS=(PROTOCOL=TCP)(HOST=dbhost-scan.example.com)(PORT=1521))
      )
      (CONNECT_DATA=(SERVICE_NAME= soapdb.example.com))
    )
  3. tnsnames.oraファイルのディレクトリの場所を指すoracle.net.tns_adminプロパティを指定します。次のいずれかの方法を使用します:
    • オプション1: データ・ソース接続プロパティとしてプロパティを設定します。Oracleではこの方法をお勧めします。

      1. データ・ソース構成でoracle.net.tns_admin=tns_directoryプロパティを指定します。

        このプロパティをWebLogic管理コンソールで指定するには、「サービス」に移動し、「データ・ソース」をクリックしてリストからデータ・ソースを選択し、「接続プール」をクリックして、「プロパティ」テキスト・ボックスに追加します。データ・ソースごとにこのステップを繰り返します。

        例: oracle.net.tns_admin=/home/oracle/tnsnames_dir

      2. このプロパティは、$ASERVER_HOME/config/fmwconfigフォルダで使用可能なjps-config-jse.xmlおよびjps-config.xmファイルをOPSSセキュリティ・ストアに指定します。

        これらのjpsファイルを変更するには、ファイルを編集し、jdbc.urlプロパティの後に oracle.net.tns_adminプロパティを追加します。たとえば、

        …
        <property name="jdbc.url" value="jdbc:oracle:thin:@soaedg"/>
        <property name="oracle.net.tns_admin" value="tns_directory"/>
        …

        ノート:

        このプロパティは、指定された特定のファイル(データ・ソース、jpsファイル)に適用されます。
    • オプション2:プロパティをjavaシステム・プロパティとして設定します。

      1. -Doracle.net.tns_admin=tns_directoryシステム・プロパティを指定します。ここで、tns_directoryは、tnsnames.oraファイルのディレクトリの場所です。

        サーバーのjavaプロパティとして設定するには、次のファイルを編集します:
        • $ASERVER_HOME/bin/setUserOverrides.sh and
        • $MSERVER_HOME/bin/setUserOverrides.sh (このファイルは共有されません。したがって、すべてのSOA中間層ホストのファイルを編集する必要があります。)
      2. これらのファイルに次の内容を追加します。

        # For using tns alias in the datasources 
        export EXTRA_JAVA_PROPERTIES="${EXTRA_JAVA_PROPERTIES} -Doracle.net.tns_admin=/home/oracle/tnsnames_dir

        ノート:

        このプロパティは、Oracle WebLogic Serverのすべてのデータ・ソースおよびjpsファイルに適用されます。一部のWLSTコマンドおよび構成ウィザードを実行する前に、このアプローチで環境内にプロパティを設定する必要があります。
        • WLSTを実行する前に、WLST_PROPERTIES環境変数にプロパティを設定します。
        • 構成ウィザードを実行する前に、config_internal.shスクリプトのJVM_ARGS環境変数にプロパティを追加します。
      3. オプション3: jdbc URLにプロパティを設定します。

        データ・ソースおよびjpsファイル内の接続文字列の一部として、tnsnames.oraファイルの場所を指定します:

        jdbc:oracle:thin:@alias?TNS_ADMIN=tns_directory

      ノート:

      このプロパティは、指定された特定のファイル(データ・ソース、jpsファイル)に適用されます。

      このメソッドは、JDBCドライバ18.3以降で使用できます。これは、Fusion Middleware 12.2.1.4 (JDBCドライバ19.3を使用)以降に適用されます。

  4. 接続文字列を別名に置き換えることで、データ・ソース定義URLで別名を使用します。
    jdbc:oracle:thin:@soapdb
    次のファイルを変更します。
    • $ASERVER_HOME/config/jdbc/にあるデータ・ソース・ファイル内
    • $ASERVER_HOME/config/fmwconfig/にあるjps-config.xmlおよびjps-config-jse.xmlファイル
    Oracle WebLogic Server管理コンソールを使用してデータ・ソースを変更できますが、jps-config xmlファイルを手動で編集する必要があります。update_dbconnect.shスクリプトを使用して、前述のすべてのファイルで置換を実行できます。

    スクリプトをダウンロードするには、リンクの「コードのダウンロード」に移動します。

  5. ドメイン内の各Oracle WebLogic Serverを再起動します。
    1. プライマリ・ドメイン内のすべてのWebLogicサーバー(管理サーバーおよび管理対象サーバー)を停止します。
    2. プライマリ・ドメインで管理サーバーを起動します。
    3. 管理サーバーが稼働したら、管理対象サーバーを起動します。
    4. データベースとの接続が正しく確立されていることを確認します。
  6. 追加のベスト・プラクティス: Oracle Database 12c以上のバージョンを使用している場合、Oracle Notification Service (ONS)のホストおよびポートの構成値は、GridLinkデータ・ソースでは必要ありません。
    Oracle Notification Serviceリストは、クライアント・ドライバによってデータベースから自動的に取得されます。Oracleでは、各データ・ソースのONS構成にスキャン・アドレスまたはOracle RACノードのリストを指定するかわりに、この機能を使用することをお薦めします。FANが有効であり、各データ・ソースのONS nodesプロパティが空であることを確認します。
    1. Oracle WebLogic Server管理コンソールを開きます。
    2. 「サービス」「データ・ソース」の順に移動します。データ・ソース名を選択し、「構成」および「ONS」を選択します。
    3. ONSノード・リストが空であることを確認します。

ネットワークの構成

プライマリ・オンプレミス・ネットワークとセカンダリOracle Cloud Infrastructure (OCI)ネットワーク間の接続が必要です。Oracleでは、専用のプライベート高帯域幅接続を介してOCI仮想クラウド・ネットワークに直接接続できるOracle Cloud Infrastructure FastConnectの使用をお薦めします。データ量に基づいて適切なポート速度を選択します。あるいは、Site- to- Site VPNを使用することもできますが、帯域幅の低下と可変レイテンシ、ジッタおよびコストが実現します。
  1. 「OCIで必要なリソースの決定」で定義されているように、OCIコンパートメントにVCNおよびサブネットを作成します。オンプレミス・ネットワークとVCN間の通信を許可するように、Oracle Cloud Infrastructure FastConnect (またはサイト間VPN)を構成します。詳細は、FastConnectおよびSite-to-Site VPNを参照してください。
  2. OCIおよびオンプレミス・ファイアウォールで必要なネットワーク・ルールを作成し、表に示すようにソース、ターゲット、プロトコルおよびポートを構成します。

    各サブネット内ですべてのトラフィックが有効になっていることを前提としています。

    ネットワーク・セキュリティ・ルールの詳細は、OCIドキュメントを参照してください。

    ソース ターゲット プロトコルおよびポート 使用
    オンプレミス・ネットワーク OCI中間層サブネット SSH(ポート22) 設定とライフサイクル
    オンプレミス・ネットワーク OCI Web層サブネット SSH(ポート22) 設定およびライフサイクル(OCIでOracle HTTP Serverが使用されている場合)
    オンプレミス・ネットワーク OCI DB層サブネット SSH(ポート22) 設定とライフサイクル
    オンプレミスDBホスト OCI DB層サブネット SQLNET (ポート1521) Oracle Data Guard redo transportの場合
    オンプレミス・ネットワーク OCI Web層サブネット HTTPS/HTTP (443、80、7001、8888) Oracle SOA Suiteサービスおよび管理コンソールへのアクセス
    オンプレミス・ネットワーク OCI中間層サブネット HTTP (7001,7010,8001,8011,8021,9001) Oracle WebLogic Serverへの直接チェック
    OCI Web層サブネット OCI中間層サブネット HTTP (7001,7010,8001,8011,8021,9001) Web層コンポーネント(OCI Load Balancer、Oracle HTTP Server)からWebLogicサーバーへの接続用
    OCI中間層サブネット OCI DB層サブネット Sqlnet (1521)、Ons (6200) WebLogicサーバーからデータベースへの接続用
    OCI中間層サブネット OCI fss-tierサブネット 詳細は、ファイル・ストレージに対するVCNセキュリティ・ルールの構成を参照してください。 NFSを使用してOCIファイル・ストレージ・ファイル・システムのエクスポートをマウントします。
    OCI中間層サブネット オンプレミス中間層ホスト SSH(ポート22) rsyncの場合
    OCI DB層サブネット オンプレミスDBホスト SQLNET (1521) Oracle Data Guard redo transportの場合
    OCI中間層サブネット OCI Web層サブネット HTTPS(443) アプリケーションからフロントエンドへのコールバック用

    ノート:

    VCN、サブネットおよびセキュリティ・ルールを作成するためのterraformコードは、ダウンロード・コードにあります。

Oracle Data Guardを構成

プライマリ・オンプレミス・データベースとOracle Cloud Infrastructure (OCI)のスタンバイ・データベースの間にOracle Data Guardを構成します。
  1. Oracle Cloud InfrastructureへのハイブリッドData Guardの説明に従って、プライマリのオンプレミス・データベースとOCIのスタンバイの間でOracle Data Guardを構成します。
    Oracle Data Guardの構成に役立つように、スクリプトはGitHubで使用でき、ダウンロード・コードで参照されます。
  2. Oracle Data Guardコマンドライン・インタフェース(DGMGRL)を使用して、Oracle Data Guardの設定が正しいことを確認します。
    DGMGRL> show configuration verbose
  3. Oracle Data Guardの構成が完了したら(ステップ2)、プライマリのオンプレミス・システムで使用されているものと同じデータベース・サービスをOCI DBシステムに作成します。PRIMARYロールとSNAPSHOT_STANDBYロールを持つサービスを構成します。
    両方のロールを使用してサービスを構成すると、データベースがスナップショット・スタンバイに変換されるときに、DG Brokerによってサービスが自動的に起動できるようになります。これは、完全なスイッチオーバーを実行せずにセカンダリ・システムを検証する場合に必要です。
    たとえば、プライマリ・データベースでデータベース・サービスsoapdb.example.comを使用してPDBにアクセスする場合、セカンダリOCI DBシステムに同じサービスを作成します。
    srvctl add service -db $ORACLE_UNQNAME -service soapdb.example.com -preferred ORCL1,ORCL2 -pdb PDB1 -role "PRIMARY,SNAPSHOT_STANDBY"
    srvctl modify service -db $ORACLE_UNQNAME -service soapdb.example.com -rlbgoal SERVICE_TIME -clbgoal SHORT
    srvctl config service -db $ORACLE_UNQNAME -service soapdb.example.com
  4. プライマリ・データベースのサービスがPRIMARYのみロール(デフォルト)を使用して作成された場合、それを変更してスナップショット・スタンバイ・ロールを追加できます。
    srvctl modify service -db $ORACLE_UNQNAME -s soapdb.example.com -role "PRIMARY,SNAPSHOT_STANDBY"
  5. プライマリ・データベースのOracle Recovery Manager (RMAN)ポリシーを確認し、アーカイブ・ログがスタンバイ・データベースに適用される前に削除されないようにします。
    プライマリ・データベースとスタンバイ・データベースで、RMANarchivelog削除ポリシーにapplied on all standby句があることを確認します。

データベースのバージョンとパッチ・レベルについて

オンプレミス・データベースのOracleホームとOCIのスタンバイ・データベースは、同じバージョンで同じパッチ・レベルである必要があります。次の方法で可能です。

  • OCIでDB Systemのプロビジョニング中にデータベース・ソフトウェア・イメージを選択する場合は、「すべてのバージョンの表示」を選択し、オンプレミス・データベースと同じデータベース・バージョンおよびパッチ・セット・レベルを選択します。
  • プロビジョニングのためにソース・データベースのOracleホーム・バージョンがOCIで使用できなくなった場合は、ソース環境にクラウド環境のデータベース・ホームと同じデータベース・パッチ・レベルにパッチを適用する必要があります。

次のシナリオは、参照の実際の例です。オンプレミスDBホームは19.6で、OCI DBホームは19.11です。

  1. $ORACLE_HOME/OPatch/opatch lspatchesコマンドを実行して、ソース環境とターゲット環境の両方にインストールされているパッチを特定します。
    $ORACLE_HOME/OPatch/opatch lspatches

    この例の出力は、次のとおりです。

    オンプレミスのDB Oracleホーム・パッチ OCI上のDB Oracleホーム・パッチ

    30676209;LNX64-20.1-RAC Asmヒット ORA-07445例外 コアダンプが発生しました[Ksxposdifqry()+556]

    30613937;Ipcor Topo Service Fix Ip Type Bug In Ip Selection

    30484981;Ojvmリリース更新: 19.6.0.0.200114 (30484981)

    30489227;Ocwリリース更新19.6.0.0.0 (30489227)

    30557433;データベース・リリース更新: 19.6.0.0.200114 (30557433)

    29780459;バグ29416368修正から_lm_res_hash_bucketを増やし、変更をバックアウトします

    30310195: Gsmadmin_internal.shard_tsのシャーディング STS_CHUNKSの無効化された制約が報告されました

    32327201;Rdbms - DSTV36更新- TZDATA2020E

    31335037;Rdbms - DSTV35更新- TZDATA2020A

    30432118;バグ28852325 29997937の19.0.0.0.0.0の上位でのマージ要求

    31732095;Update Perl in 19C Database Oracle Home To V5.32

    32490416;JDKバンドル・パッチ19.0.0.0.210420

    32399816;Ojvmリリース更新: 19.11.0.0.210420 (32399816)

    32579761;Ocwリリース更新19.11.0.0.0 (32579761)

    32545013;データベース・リリース更新: 19.11.0.0.210420 (32545013)

  2. 既存のパッチの分析: 個別パッチを決定し、新しいRUパッチですでに修正されているかどうか、または新しい重複パッチが必要かどうかを確認し、アンインストールする必要があるパッチを決定し、RUの適切なパッチ・ファイルを特定します。
  3. 分析に基づいて、RU更新をインストールする前に、新しいRUで既に修正されている個別パッチをアンインストールします(そうしないと、競合が発生します)。この例では、オフ・パッチは19.11で修正されているため、19.11 RUをインストールする前にパッチをロールバックする必要があります。
    30676209;LNX64-20.1-RAC  ASM HIT ORA-07445  EXCEPTION ENCOUNTERED  CORE DUMP [KSXPOSDIFQRY()+556]
    30613937;IPCOR TOPO SERVICE  FIX IP TYPE BUG IN IP SELECTION
    
  4. RUパッチを検索、ダウンロード、およびインストールします。この例では、19.11 RUパッチはコンボパッチ32578973にあります。COMBO OF OJVM RU COMPCOMPONENT 19.11.0.0.210420 + GI RU 19.11.0.0.210420は次のとおりです。
    32399816;OJVM RELEASE UPDATE: 19.11.0.0.210420 (32399816)  
    32579761;OCW RELEASE UPDATE 19.11.0.0.0 (32579761)            
    32545013;Database Release Update : 19.11.0.0.210420 (32545013)
  5. OCI DBホームがRUの最上位にあるオーバーレイ、個別パッチおよびその他のパッチを検索、ダウンロードしてインストールします。例:
    29780459;INCREASE _LM_RES_HASH_BUCKET AND BACK OUT CHANGES FROM THE BUG 29416368 FIX
    30310195;DBSAT REPORTED DISABLED CONSTRAINTS FOR SHARDING STS_CHUNKS ON GSMADMIN_INTERNAL.SHARD_TS
    30432118;MERGE REQUEST ON TOP OF 19.0.0.0.0 FOR BUGS 28852325 (DSTV33 update) 29997937 (DSTV34 update)
    31335037;RDBMS - DSTV35 UPDATE - TZDATA2020A
    32327201;RDBMS - DSTV36 UPDATE - TZDATA2020E
    32490416;JDK BUNDLE PATCH 19.0.0.0.210420
    31732095;UPDATE PERL IN 19C DATABASE ORACLE HOME TO V5.32
  6. GIパッチについても同様の分析を実行します。

ノート:

この例では、RDBMS Oracleホームのみが含まれます。オンプレミスGIインストールをセカンダリと同じレベルにパッチを適用することは、厳密に必要ない場合があります。
  • Oracle Data Guardの観点からは、プライマリとスタンバイに同じGIバージョンを持つ必要はありません。Oracle Data Guardは、データベース内のどのバージョンからも完全に独立しているため、バージョンや時間に制限なく、異なるサイト間で異なるバージョンのオペレーティング・システム、Oracle Clusterware、ハードウェアまたはストレージ・ソフトウェアを実行できます。(ドキュメントID 1265700.1)
  • Oracle Data Guardに関係なく、RAC DBのGIおよびRDBMSバージョンで同じバージョンを持つ必要はありません: 18c以降、Oracle Grid Infrastructure (GI) /Clusterware (CRS)のバージョンは、可能な組合せの最初の桁まで常に等しいか、最も高いバージョンである必要があります。たとえば、グリッド・インフラストラクチャは18.1.0.0、データベースは18.3.0.0です。(ドキュメントID 337737.1)

DBホームと同じレベルでGIにパッチを適用することをお薦めします。DBホームを新しいリリース更新(RU)にパッチを適用すると、多くのパッチがDBとGIに共通し、OPatchAutoを使用して両方のホームを同時に実行できます。