環境の構成

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:@mypdbservice

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

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

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

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

プライマリWebLogicサーバー・システムでこのアプローチをまだ使用していない場合は、次のステップを実行してデータ・ソースで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行で入力することをお勧めします。
    MYPDBSERVICE = 
    (DESCRIPTION=
      (ADDRESS_LIST=
        (LOAD_BALANCE=ON)
        (ADDRESS=(PROTOCOL=TCP)(HOST=dbhost-scan.example.com)(PORT=1521))
      )
      (CONNECT_DATA=(SERVICE_NAME= mypdbservice.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:@mypdbservice
    次のファイルを変更します。
    • $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) Webアプリケーションおよび管理コンソールへのアクセス
    オンプレミス・ネットワーク OCI中間層サブネット HTTP (7001,8001,9001) Oracle WebLogic Serverへの直接チェック
    OCI Web層サブネット OCI中間層サブネット HTTP (7001,8001,9001) Web層コンポーネント(OCI Load Balancer、Oracle HTTP Server)からWebLogicサーバーへの接続用
    OCI中間層サブネット OCI DB層サブネット SQLNET (1521)、ONS (6200) WebLogicサーバーからデータベースへの接続用
    OCI中間層サブネット OCI FSS層サブネット 詳細は、ファイル・ストレージに対する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によって自動的に起動されます。これは、完全なスイッチオーバーを実行せずにセカンダリ・システムを検証する場合に必要です。
    たとえば、プライマリ・データベースでデータベース・サービスmypdbservice.example.comを使用してPDBにアクセスする場合、セカンダリOCI DBシステムに同じサービスを作成します。
    srvctl add service -db $ORACLE_UNQNAME -service mypdbservice.example.com -preferred ORCL1,ORCL2 -pdb PDB1 -role "PRIMARY,SNAPSHOT_STANDBY"
    srvctl modify service -db $ORACLE_UNQNAME -service mypdbservice.example.com -rlbgoal SERVICE_TIME -clbgoal SHORT
    srvctl config service -db $ORACLE_UNQNAME -service mypdbservice.example.com
  4. プライマリ・データベース内のサービスがPRIMARYロールのみ(デフォルト)で作成された場合、それを変更してスナップショット・スタンバイ・ロールを追加できます。
    srvctl modify service -db $ORACLE_UNQNAME -s mypdbservice.example.com -role "PRIMARY,SNAPSHOT_STANDBY"
  5. プライマリ・データベースのOracle Recovery Manager (RMAN)ポリシーを確認して、スタンバイ・データベースに適用する前にアーカイブ・ログが削除されないようにします。
    プライマリ・データベースおよびスタンバイ・データベースで、RMANarchivelog削除ポリシーにapplied on all standby句があることを確認します。

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

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

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

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

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

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

    DB Oracle Homeパッチ(オンプレミス) OCIでのDB Oracle HOMEパッチ

    30676209; LNX64-20.1-RAC ASM HIT ORA-07445 EXCEPTION ENCOUNTERED CORE DUMP [KSXPOSDIFQRY()+556]

    30613937; IPCOR TOPOサービス修正IPタイプバグIP選択

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

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

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

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

    30310195; DBSATがGSMADMIN_INTERNAL.SHARD_TSのシャーディングSTS_CHUNKSに対して無効化された制約を報告

    32327201; RDBMS - DSTV36更新- TZDATA2020E

    31335037; RDBMS - DSTV35更新- TZDATA2020A

    30432118;19.0.0.0の上のバグ28852325 29997937のマージ要求

    31732095;19CデータベースORACLEホームのPERLを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 COMPONENT 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 Homeのみが含まれています。オンプレミスのGIインストールにセカンダリと同じレベルへのパッチ適用は、厳密には必要ない場合があります。
  • Oracle Data Guardの観点からは、プライマリとスタンバイに同じGIバージョンを持つ必要はありません。Oracle Data Guardは、データベース内のどのバージョンからも完全に独立しているため、バージョンや時間に制限なく、異なるサイト間で異なるバージョンのオペレーティング・システム、Oracle Clusterware、ハードウェアまたはストレージ・ソフトウェアを実行できます。(Doc 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にパッチを適用することをお薦めします。新しいリリース更新(RU)にDBホームにパッチを適用する必要がある場合、多くのパッチがDBおよびGIに共通であり、OPatchAutoを両方のホームに同時に使用できます。