調整Replicatについて

調整モードでは、Replicatは次のように動作します。

  • Oracle GoldenGate証跡を読み取ります。
  • データのフィルタリング、マッピング、および変換を実行します。
  • データのフィルタリング、マッピング、および変換を実行します。
  • 指定のターゲット・データベース(たとえばODBCまたはネイティブのデータベース・インタフェース)に対してサポートされているSQLインタフェースを介して、SQLをターゲットに適用します。

クラシック・モードと調整モードの相違点は、調整モードではReplicatがマルチスレッドである点です。単一のReplicatインスタンス内で複数のスレッドが独立に証跡を読み取り、パラレルにトランザクションを適用します。各スレッドは、フィルタリング、マッピング、変換、SQL作成およびエラー処理を、割り当てられたワークロードについて処理します。coordinatorスレッドは、トランザクションをスレッド間で調整して、スレッド間の依存関係を処理します。

合計ソース・トランザクションの整合性が維持されないように、ソース・トランザクションはCRプロセスに分割できます。CRプロセスによって処理されるトランザクションの一部はコミットされた順序で実行されますが、すべてのCRプロセスに渡るトランザクション全体はコミットされた順序では実行されません。

調整Replicatでは、ワークロードのユーザー定義のパーティション化が可能で、大量のトランザクションを同時に適用できます。また、DDLやTHREADRANGEパーティション化を使用した主キー更新などの調整の必要なトランザクションの実行が自動的に調整されます。そのようなトランザクションは、ターゲットでは1つのトランザクションとして完全に同期化されて実行されます。まず、それより前のトランザクションがすべて適用されるのを待機し、このバリア・トランザクションより後のトランザクションはすべて、このバリア・トランザクションが適用されるまで待機します。

1つの調整Replicatに必要なパラメータ・ファイルは、スレッドの数に関係なく1つのみです。MAP文でTHREADまたはTHREADRANGEオプションを使用して、それらのオブジェクトのトランザクションをどのスレッドが処理するかを指定し、Replicatグループを作成するときに、スレッド数の最大値を指定します。

この図は、調整Replicatのアーキテクチャを示しています。



この図に示すように、調整Replicatには次の2つのプロセスが含まれます。

バリア・トランザクションについて

バリア・トランザクションは、調整Replicat構成で自動的に管理されます。バリア・トランザクションは、スレッド間での調整を必要とするトランザクションです。たとえば、DDL文、主キーに対する更新を含むトランザクションおよび一部のEVENTACTIONSアクションなどです。

オプションで、MAP文で COORDINATEDキーワードを使用することで、他のトランザクションを強制的にバリア・トランザクションのように処理できます。この使用例の1つは、SQLEXECを、強制的にシリアル実行に類似した方法で実行する場合です。これは、ターゲットの状態がすべてのトランザクションにわたって整合的でないと結果が一意にならない可能性がある場合に有益です。

ノート:

マップされた表がTHREADRANGEに基づいてパーティション化されている場合、調整Replicatは非バリア・トランザクションの依存性計算を実行しません。指定されたTHREADRANGE列に依存して、ハッシュ値が計算されます。これによりハッシュ値に基づいて受信データがパーティション化され、このハッシュ値に一致するすべてのレコードが同じスレッドに送信されます。

バリア・トランザクションの処理方式

バリア・トランザクションの開始時点で、すべてのスレッドが収束し、待機します。他のスレッドが開始位置に達するまで、バリア・トランザクションは一時停止されます。いずれかのスレッドがバリア・トランザクションの一部をすでに処理中であった場合、それらのスレッドはロールバックを実行します。グループ化トランザクション(BATCHSQLまたは GROUPTRANSOPSパラメータによって制御されているものなど)も、バリア・トランザクションの開始位置に到達するまでロールバックされ、再適用されます。

バリア・トランザクションの後も、すべてのスレッドが収束し、次のトランザクションの開始を待機します。バリア・トランザクションの前と後の2つの同期ポイントにより、メタデータ操作とEVENTACTIONSアクションがすべて、データ操作に関連する適切な順序で行われることが保証されます。

バリア・トランザクションの開始時点でスレッドが同期すると、バリア・トランザクションは、MAP文で指定されたすべてのスレッドのうちで最も低いスレッドIDを持つスレッドによってシリアルに処理され、複数スレッドにわたるパラレル処理が再開されます。Replicatパラメータ・ファイルでUSEDEDICATEDCOORDINATIONTHREADパラメータを指定することによって、バリア・トランザクションが特定のスレッド(常にスレッド0)を介して処理されるように強制することができます。