4 Extractでの各種Replicatモードの選択

この章では、対象のデータベース環境のExtractで使用する適切なReplicatモードの判断に役立つ情報を示します。

内容は次のとおりです。

4.1 使用する適用方法の決定

Replicatプロセスは、レプリケートされたデータをOracleターゲット・データベースに適用します。

Oracleターゲット・データベースの場合、非統合モードまたは統合モードのいずれかでReplicatをパラレルに実行できます。特定の機能で別のタイプのReplicatが必要な場合を除き、Oracleでは並列Replicatを使用することをお薦めします。

次の表に、それぞれのReplicatでサポートされる機能を示します。

機能 並列Replicat 統合Replicat 調整Replicat クラシックReplicat

バッチ処理

あり

あり

あり

あり

バリア・トランザクション

あり

あり

あり

なし

依存関係の計算

あり

あり

なし

なし

自動並列化

ノート:

デフォルトでは、自動並列化は無効になっています。デフォルト設定では、4つのスレッドのみが使用されます。MIN_PARALLELISMおよびMAX_PARALLELISMを使用するようにReplicatを変更すると、自動並列化が使用されます。

あり

あり

なし

なし

DMLハンドラ

あり、統合モード

あり

なし

なし

プロシージャ・レプリケーション

あり。統合並列Replicat (iPR)に使用されます

あり

なし

なし

自動CDR

あり。iPRによってのみ使用されます

あり

なし

なし

依存関係を認識したトランザクション分割

あり

なし

なし

なし

RACノード間の処理

あり

なし

あり

なし

ALLOWDUPTARGETMAP

ALLOWDUPTARGETMAP | NOALLOWDUPTARGETMAPを参照してください。

なし。iPRを備えたOracle Database

なし。Oracle Database

あり

あり

内容は次のとおりです。

4.1.1 並列Replicatについて

並列Replicatは、パフォーマンス向上のために並列でトランザクションを適用する別種のReplicatです。

統合Replicatと同様に、トランザクション間の依存関係が考慮されます。データベースの外部で依存性の計算、マッピングの並列処理および適用が実行されるため、負荷が別のサーバーに移されます。このプロセスでトランザクションの整合性が維持されます。さらに、並列Replicatは、大きなトランザクションをチャンクに分割してパラレルに適用することで、大きなトランザクションのパラレル適用をサポートします。

ノート:

OLTPワークロードで最適なパフォーマンスが得られるように、非統合モードの並列Replicatをお薦めします。

並列Replicatおよび統合並列Replicatは、Oracleデータベースのみでサポートされます。ただし、非統合オプションの使用時には、並列Replicatはすべてのデータベースをサポートします。

並列Replicatを使用する場合は、次の値(デフォルト値)を確認してください。
  • 証跡内のメタデータ。証跡が12.1未満でフォーマットされている場合は、並列Replicatを使用できません。

  • 証跡ファイルにはスケジュール列が必要です。

  • UPDATERCORDFORMAT COMPACTを使用する必要があります。

統合並列Replicatでは、Replicatはデータをターゲット・データベースに適用するインバウンド・サーバーにLCRを送信します。通常の並列Replicatでは、その他の非統合Replicatの動作と同様に、SQL文としてLCRをデータベースに直接適用します。

並列Replicatのコンポーネントは次のとおりです。
  • マッパーはパラレルに動作し、証跡の読取り、証跡レコードのマッピング、マップされたレコードの統合Replicat LCR形式への変換、および後続の処理のためのマージャへのLCRの送信を実行します。1つのマッパーが1つのセットのトランザクションをマップしている間に、次のマッパーが次のセットのトランザクションをマップします。証跡情報は分割されますが、証跡情報が正しく順序付けされるため、証跡ファイルはそのままの状態になります。

  • マスター・プロセスにはコレータとスケジューラの2つのスレッドがあります。コレータはマスターからマップされたトランザクションを受け取り、依存関係の計算のために証跡の順序に戻します。スケジューラがトランザクション間の依存関係を計算し、トランザクションを独立したバッチにグループ化し、ターゲット・データベースに適用するためにバッチをアプライアに送信します。

  • アプライアは配列実行のためにバッチ内のレコードを並べ替えます。さらにバッチをターゲット・データベースに適用し、エラー処理を実行します。また、適用したトランザクションをチェックポイント表で追跡します。

ノート:

並列Replicatでは、外部キー列が索引付けされている必要があります。
4.1.1.1 並列Replicatの利点

パラレルReplicatの使用には、次の利点があります。

  • 統合並列Replicatは、複数のトランザクションを同時に適用するパラレル適用プロセス間で高負荷ワークロードを自動的にパーティション化しながら、ソース・トランザクションの完全性とアトミック性を保持できます。適用プロセスの最小数および最大数の両方をPARALLELISMおよびMAX_PARALLELISMパラメータで構成できます。Replicatは、ワークロードが増加すると、追加のサーバーを自動的に追加し、ワークロードが軽減されると、再度下方に調整します。

  • 統合並列Replicatには、構成のための最小限の作業が必要です。すべての作業は、レンジ・パーティションを構成することなく1つのReplicatパラメータ・ファイル内に構成されます。

  • 高パフォーマンスの適用ストリーミングは、軽量アプリケーション・プログラミング・インタフェース(API)によって、Replicatとインバウンド・サーバーの間で統合並列Replicatのために有効化されます。

  • バリア・トランザクションは、統合並列Replicatによって複数のサーバー適用プロセス間で調整されます。

  • DDL操作は、DDLの実行前にサーバー処理が完了まで待機することで、バリアを強制する直接トランザクションとして処理されます。

  • 一時的な重複主キー更新は、統合並列Replicatによってシームレスに処理されます。

  • 並列Replicatでは、単一の大規模トランザクションを小さなチャンクに分割して、そのチャンクをパラレルに適用できます。詳細は、SPLIT_TRANS_RECSを参照してください。

4.1.2 非統合Replicatについて

非統合モードでは、Replicatプロセスは標準のSQLを使用してデータを直接ターゲット・データベースに適用します。このモードでは、Replicatは次のように動作します。

  • Oracle GoldenGate証跡を読み取ります。

  • データのフィルタリング、マッピング、および変換を実行します。

  • ソース・データベースのDMLまたはDDLトランザクションを表すSQL文を作成します(コミット順)。

  • Oracle Call Interface (OCI)でSQLをターゲットに適用する。

次の図は、非統合モードでのReplicatの構成を示しています。

統合Replicatモードでサポートされない機能を多用する場合は、非統合Replicatを使用してください(「統合Replicatについて」を参照)。

条件付きReplicat構成を使用することで、トランザクションを非統合Replicatと並行して適用できます。

4.1.3 統合Replicatについて

統合モードでは、Replicatプロセスは、Oracle Database内で使用可能な適用処理機能を利用します。このモードでは、Replicatは次のように動作します。

  • Oracle GoldenGate証跡を読み取ります。

  • データのフィルタリング、マッピング、および変換を実行します。

  • ソース・データベースDMLトランザクションを表す論理変更レコード(LCR)を構築する(コミットされた順)。DDLはReplicatによって直接適用されます。

  • 軽量ストリーミング・インタフェースによって、データベース・インバウンド・サーバーと呼ばれるターゲット・データベースのバックグラウンド・プロセスにアタッチする。

  • データがターゲット・データベースに適用されるインバウンド・サーバーにLCRを転送します。

次の図は、統合モードでのReplicatの構成を示しています。

単一のReplicat構成内で、適用サーバーと呼ばれるインバウンド・サーバーの複数の子プロセスがトランザクションをパラレルに適用し、元のトランザクションのアトミック性を保持します。この並列度は、Replicatプロセスの構成時、または必要に応じて動的に、ターゲット・システムのサポートに応じて増加できます。次の図は、2つの並列適用サーバーで構成された統合Replicatを示しています。

統合Replicatはトランザクションを非同期に適用します。高速のスループットを達成するために、相互依存性のないトランザクションを安全に実行して順不同でコミットできます。相互依存性のあるトランザクションは、ソースと同じ順序で適用されます。

インバウンド・サーバーのリーダー・プロセスは、ターゲット・データベースで定義される制約(主キー、一意キー、外部キー)に基づいて、ワークロードのトランザクション間の相互依存性を計算します。バリア・トランザクションおよびDDL操作も自動的に管理されます。コーディネータ・プロセスは、複数のトランザクションを調整し、適用サーバー間の順序を管理します。

インバウンド・サーバーが構成済機能または列タイプをサポートしていない場合、Replicatはインバウンド・サーバーから切断して、インバウンド・サーバーがキューのトランザクションを完了するのを待機し、OCIを使用して直接適用モードでトランザクションをデータベースに適用します。Replicatは、直接トランザクションの適用後に統合モードで処理を再開します。

次の機能は、Replicatによって直接モードで適用されます。

  • DDL操作

  • 順序操作

  • TABLE内のSQLEXECパラメータまたはMAPパラメータ

  • EVENTACTIONS処理

  • UDT

    ノート:

    デフォルトでは、UDTはインバウンド・サーバーによって適用されます。NOUSENATIVEOBJSUPPORTが設定されている場合にのみ、Extract処理がReplicatによって直接実行されます。

トランザクションは、直接適用モードでシリアルに適用されるため、このような操作を多用すると、統合Replicatモードのパフォーマンスが低下する場合があります。統合Replicatは、適用処理のほとんどが統合モードで実行可能な場合に、最高のパフォーマンスを発揮します(『Oracle DatabaseのためのOracle GoldenGateの使用』インスタンス化後の処理の監視および制御に関する項を参照)。

ノート:

ユーザー・イグジットは統合モードで実行されます。ただし、終了コードがレプリケーション・ストリームのデータに依存している場合は、ユーザー・イグジットによって予期しない結果が発生することがあります。

ノート:

統合Replicatでは、外部キー列が索引付けされている必要があります。
4.1.3.1 統合Replicatの利点

非統合Replicatではなく統合Replicatを使用する利点は次のとおりです。

  • 統合Replicatは、複数のトランザクションを同時に適用するパラレル適用プロセス間で自動的にパーティション化でき、ソース・トランザクションの完全性とアトミック性を保持します。適用プロセスの最小数および最大数の両方をPARALLELISMおよびMAX_PARALLELISMパラメータで構成できます。Replicatは、ワークロードが増加すると、追加のサーバーを自動的に追加し、ワークロードが軽減されると、再度下方に調整します。

  • 統合Replicatでは、最小の作業を構成する必要があります。すべての作業は、レンジ・パーティションを構成することなく1つのReplicatパラメータ・ファイル内に構成されます。

  • 高パフォーマンスの適用ストリーミングは、Replicatおよびインバウンド・サーバー間で、軽量アプリケーション・プログラミング・インタフェース(API)によって、統合Replicatで有効化されます。

  • バリア・トランザクションは、複数のサーバー適用プロセス間で、統合Replicatによって調整されます。

  • DDL操作は、DDLの実行前にサーバー処理が完了まで待機することで、バリアを強制する直接トランザクションとして処理されます。

  • 一時的な重複主キー更新は、統合Replicatによってシームレスに処理されます。

4.1.3.2 統合Replicatの要件

統合Replicatを使用するには、次の条件を満たす必要があります。

  • 表間の依存性の計算およびターゲットでの同時トランザクションのスケジューリングをサポートするには、サプリメンタル・ロギングをソース・データベースで有効にする必要があります。必要なロギングの有効化の手順は、「ロギング・プロパティの構成」を参照してください。このロギングは任意の時点で有効化できますが、その前に、Oracle GoldenGateプロセスを開始します。

  • 統合並列ReplicatはOracle Database 12.2.0.1以上でサポートされます。

4.2 Extractについて

Oracle GoldenGate Extractプロセスはデータベース・ログマイニング・サーバーと直接対話し、論理変更レコード(LCR)形式でデータの変更を受け取ります。次に、Extractの構成について説明する図を示します。

次に、Oracle GoldenGate Extractの追加機能の一部を示します。

  • Extractはデータベースと完全に統合されているため、Oracle RAC、ASMおよびTDEなどの機能はOracle GoldenGateとシームレスに連動します。

  • Extractは、データベース・ログマイニング・サーバーを使用してOracle REDOストリームにアクセスします。アーカイブ・ログの異なるコピー間またはオンライン・ログの異なるミラー・バージョン間での切替えは自動的に行われます。そのため、キャプチャでは、ディスクの破損、ハードウェア障害またはオペレータの誤操作によってログ・ファイルが消失してしまった場合でも、その他のアーカイブ・ログやオンライン・ログが使用できれば、その状態を透過的に処理できます。

  • キャプチャによって、表のフィルタリングを高速化できます。

  • キャプチャにより、Point-in-TimeリカバリとRAC統合がより効率的に処理されます。

  • キャプチャには、統合ログ管理の機能があります。Oracle Recovery Manager (RMAN)で、Extractで必要なアーカイブ・ログが自動的に保持されます。

  • キャプチャは、マルチテナント・コンテナ・データベースからのキャプチャとPDB単位のキャプチャ・モードからのキャプチャをサポートしています。

  • キャプチャおよび統合適用はどちらもデータベース・オブジェクトのため、オブジェクトの名前付けはその他のOracle Databaseオブジェクトと同じルールに従います(『Oracle GoldenGateの管理』Oracle GoldenGateの入力におけるオブジェクト名の指定に関する項を参照)。

4.2.1 統合キャプチャ・デプロイ・オプション

この項では、統合キャプチャのデプロイ・オプションについて説明しますが、それらはマイニング・データベースのデプロイ場所によって異なります。マイニング・データベースは、ログマイニング・サーバーがデプロイされているデータベースです。

  • ローカル・デプロイ: ローカル・デプロイの場合、ソース・データベースとマイニング・データベースは同じです。ソース・データベースは、REDOストリームをマイニングして変更をキャプチャする対象のデータベースで、ログマイニング・サーバーのデプロイ先でもあります。統合キャプチャはデータベースと完全に統合されているため、このモードでは、特別なデータベース設定は不要です。

  • ダウンストリーム・デプロイ: ダウンストリーム・デプロイでは、ソース・データベースとマイニング・データベースは、異なるデータベースです。ログマイニング・サーバーは、ダウンストリーム・データベースに作成します。REDOログをダウンストリーム・マイニング・データベースに転送してそこでキャプチャを行うようにソース・データベースのREDO転送を構成します。キャプチャのオーバーヘッドや変換によるその他のオーバーヘッドおよび本番サーバーの他の処理を軽減するには、キャプチャにダウンストリーム・マイニング・サーバーを使用することをお薦めしますが、これにはログの転送や他の構成が必要です。

    ダウンストリーム・マイニング構成を使用する場合、ソース・データベースとマイニング・データベースは同じプラットフォームのものである必要があります。たとえば、ソース・データベースがWindows 64ビットで稼働している場合、ダウンストリーム・データベースのプラットフォームもWindows 64ビットである必要があります。ダウンストリーム・マイニング・データベースを構成するには、「ダウンストリーム・マイニング・データベースの構成」および「ダウンストリーム・マイニング構成の例」を参照してください。

  • ダウンストリーム・ソースレスExtractデプロイ: Extractパラメータ・ファイルでUSERIDパラメータをNOUSERIDで置換します。TRANLOGOPTIONS MININGUSERを使用する必要があります。Extractは必要な情報をすべてダウンストリーム・マイニング・データベースから取得します。ソース・データベースへの接続には依存しません。Extractに影響を与えることなくソース・データベースを停止および再起動できます。

    ソース・データベースからデータをフェッチする必要があるREDO変更が発生すると、Extractは異常終了します。

    dba_goldengate_support_modeビューにID KEYとしてリストされているすべての表をキャプチャするには、その表をサポートするFETCHUSERID接続またはFETCHUSERIDALIAS接続が必要です。FULLとしてリストされている表は、これを必要としません。また、問合せを実行するかストアド・プロシージャを実行するSQLEXEC操作を顧客が実行する場合、SQLEXECUSERIDまたはUSERIDALIASで動作するため、この方法はNOUSERIDと互換性がないので使用できないことに注意してください。

4.3 Extractでの各種Replicatモードの使用

推奨のOracle GoldenGate構成は、Oracleソースで1つのExtractを使用し、Oracleターゲットのソース・データベースごとに1つの統合Replicatを使用することです(この構成がOracleバージョンでサポートされている場合)。

インバウンド・サーバーを使用するか、必要時に直接適用に切り替えることで、1つの統合Replicat構成ですべてのOracleデータ型をサポートし、ソース・トランザクションの完全性を保持します。必要に応じて、並列度設定を目的の適用パフォーマンス・レベルに調整できます。

各Extractグループでは、表のデータ型および属性に基づいて、処理モードに適したオブジェクトを処理する必要があります。一方のExtractのオブジェクトに、もう一方のExtractのオブジェクトのDMLまたはDDL依存性を含めることはできません。同じタイプの分離をReplicat構成に適用する必要があります。

ターゲット・データベースが統合ReplicatをサポートしないOracleバージョンの場合やOracle以外のデータベースの場合は、調整または並列Replicat構成を使用できます。