Replicatのタイプ

Replicatプロセスは、次の3つのモード(Replicatタイプとも呼ばれる)で構成できます。

  • クラシックReplicat: クラシック・モードでは、Replicatは、標準SQLを使用してデータをターゲット表に適用する単一スレッド・プロセスです。詳細は、「クラシックReplicat」を参照してください。

  • 調整済Replicat: このモードでは、Replicatプロセスがスレッド化されます。1つのコーディネータ・スレッドが、レプリケートされたSQL操作をパラレルに実行する1つ以上のスレッドを作成して調整します。調整Replicatプロセスは1つのパラメータ・ファイルを使用し、1つの単位として監視および管理されます。詳細は、「調整Replicat」を参照してください。

  • 統合Replicat: このモードでは、ReplicatプロセスはOracle Database内で使用可能な適用処理機能を利用します。単一のReplicat構成内で、適用サーバーと呼ばれるインバウンド・サーバーの複数の子プロセスがトランザクションをパラレルに適用し、元のトランザクションのアトミック性を保持します。詳細は、「統合Replicat」を参照してください。

  • パラレルReplicat: パフォーマンスを向上させるためにトランザクションをパラレルに適用する、新しいReplicatの種類です。パラレルReplicatは完全なメタデータを持つ証跡からのデータ・レプリケーションのみをサポートし、従来の証跡形式を必要とします。統合Replicatと同様に、トランザクション間の依存関係が考慮されます。詳細は、 「パラレルReplicat」を参照してください。パラレルReplicatは、非統合(クラシック)および統合モードで使用できます。

  • Replicatの初期ロード: このモードでは、初期ロード用にOracle GoldenGateを設定すると、Replicatプロセスは静的データ・コピーをターゲット・オブジェクトに適用するか、高速なバルク・ロード・ユーティリティにデータをルーティングします。詳細は、「管理クライアントを使用した初期ロードExtractの追加」を参照してください。

クラシックまたは非統合Replicatについて

クラシック・モードでは、Replicatは標準SQLを使用してデータをターゲット表に適用する単一スレッド・プロセスです。このモードでは、Replicatは次のように動作します。

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

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

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

  • 指定のターゲット・データベース(たとえばODBCまたはネイティブのデータベース・インタフェース)に対してサポートされているSQLインタフェースを介して、SQLをターゲットに適用します。

この図に示すように、クラシックReplicatを使用してトランザクションをパラレルに適用できますが、複数のReplicatプロセスにわたってワークロードをパーティション化する必要があります。各Replicatに対してパラメータ・ファイルを作成する必要があります。

任意のオブジェクトに対してクラシック・モードを使用すべきか判断するためには、1つのReplicatグループのオブジェクトが他のいずれかのReplicatグループのオブジェクトに対して、トランザクショナルまたはそれ以外の依存関係を持つことがあるかどうかを判断する必要があります。すべてのワークロードが、複数のReplicatグループにパーティション化されても元のトランザクション原子性を維持できるというわけではありません。たとえば、ワークロードが主キーを定期的に更新する表は、この方法で簡単にパーティション化することはできません。このモードでは、DDLレプリケーション(データベースに対してサポートされている場合)も、アクションが特定のレコードに基づいているような一部のSQLEXECまたはEVENTACTIONS機能の使用も、有効ではありません。

表に外部キーの依存関係や主キーの更新がない場合、クラシック・モードが適している可能性があります。クラシック・モードには、調整モードより少ないオーバーヘッドしか必要ありません。

統合Replicatについて

統合モードのReplicatでは、ターゲットのOracleデータベース内で利用可能な適用処理機能を使用します。このモードでは、Replicatは、証跡を読み取り、ソースのDMLまたはDDLトランザクションを表す論理変更レコードを作成し、それらのレコードをOracleターゲット・データベースのインバウンド・サーバーに送信します。インバウンド・サーバーは、データをターゲット・データベースに適用します。

ノート:

統合Replicatは、オンライン・プロセスでしかありません。初期ロードを実行するためには使用しないでください。

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

  • Oracle GoldenGate証跡を読み取ります。
  • データのフィルタリング、マッピング、および変換を実行します。
  • ソース・データベースDMLトランザクションを表す論理変更レコード(LCR)を構築する(コミットされた順)。DDLはReplicatによって直接適用されます。
  • データベース・インバウンド・サーバーと呼ばれるターゲット・データベースのバックグラウンド・プロセスに、軽いストリーミング・インタフェースを介してアタッチします。
  • データがターゲット・データベースに適用されるインバウンド・サーバーにLCRを転送します。

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



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

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

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

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

  • DDL操作

  • 順序操作

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

  • EVENTACTIONS処理

  • UDT

ノート:

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

トランザクションは、順次に適用されるため、このような操作を多用すると、統合Replicatモードのパフォーマンスが低下する場合があります。統合Replicatは、適用処理のほとんどが統合モードで実行可能な場合に、最高のパフォーマンスを発揮します。

ノート:

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

ノート:

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

統合Replicatの利点

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

  • 統合Replicatは、複数のトランザクションを同時に適用するパラレル適用プロセス間で自動的にパーティション化でき、ソース・トランザクションの完全性とアトミック性を保持します。適用プロセスの最小数および最大数の両方をPARALLELISMおよびMAX_PARALLELISMパラメータで構成できます。Replicatは、ワークロードが増加すると、追加のサーバーを自動的に追加し、ワークロードが軽減されると、再度下方に調整します。
  • 統合Replicatでは、最小の作業を構成する必要があります。すべての作業は、レンジ・パーティションを構成することなく1つのReplicatパラメータ・ファイル内に構成されます。
  • 高パフォーマンスの適用ストリーミングは、Replicatおよびインバウンド・サーバー間で、軽量アプリケーション・プログラミング・インタフェース(API)によって、統合Replicatで有効化されます。
  • バリア・トランザクションは、複数のサーバー適用プロセス間で、統合Replicatによって調整されます。
  • DDL操作は、DDLの実行前にサーバー処理が完了まで待機することで、バリアを強制する直接トランザクションとして処理されます。
  • 一時的な重複主キー更新は、統合Replicatによってシームレスに処理されます。

統合Replicatの要件

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

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