双方向ループ検出の有効化
Oracle GoldenGateの双方向および多方向実装には、1つのソース・データベースのExtractが、別のソース・データベースからReplicatによって送信されたトランザクションを再取得しないように、ループ検出が必須です。
CDC Extractキャプチャ方法の場合、デフォルトでは、Replicatの配信先の表に対してサプリメンタル・ロギングが有効なかぎり、Extractが構成されているデータベースにReplicatによってコミットされたトランザクションは、Replicatからのトランザクションを再取得します。
Replicatによって適用されるトランザクションの再取得を無視するには、CDC Extractに対してTRANLOGOPTIONS FILTERTABLE
パラメータを使用する必要があります。フィルタリング表として使用する表は、Replicatのために作成が必要なOracle GoldenGateチェックポイント表です。
フィルタ表を作成してサプリメンタル・ロギングを有効化する手順:
-
各ソース・データベースで、Replicatで使用するチェックポイント表が作成されていることを確認します。たとえば:
ADD CHECKPOINTTABLE ggadmin.oggcheck
GLOBALS
ファイルのGGSCHEMA
パラメータで使用されるスキーマ名と同じものを使用することをお薦めします。 -
チェックポイント表に対してサプリメンタル・ロギングを有効にします。たとえば:
ADD TRANDATA ggadmin.oggcheck ALLCOLS
-
チェックポイント表の情報を使用してReplicatが作成されていることを確認します。
ADD REPLICAT reptgt1, EXTTRAIL ./dirdat/e2, CHECKPOINTTABLE ggadmin.oggcheck
-
フィルタリング表用のReplicatのチェックポイント表を使用して、
IGNOREREPLICATES
(デフォルトでオン)およびFILTERTABLE
パラメータにより各Extractを構成します。TRANLOGOPTIONS IGNOREREPLICATES TRANLOGOPTIONS FILTERTABLE ggadmin.oggcheck
ノート:
Oracle GoldenGate for PostgreSQLでは、Extractごとに1つのFILTERTABLE
文のみがサポートされるため、複数方向の実装では、各Replicatが配信先のデータベース内の同じチェックポイント表を必ず使用するようにします。