ターゲット表に対するトリガーおよびカスケード制約の無効化
トリガー操作またはカスケード制約によって発生するDML操作をソース表から取得するようにOracle GoldenGateが構成されている場合は、ターゲット表でトリガー、カスケード削除制約およびカスケード更新制約を無効にします。
無効になっていない場合、同じトリガーまたは制約がターゲット表でアクティブになり、レプリケートされたデータのために重複となります。ソース表に
emp_src
とsalary_src
、ターゲット表にemp_targ
とsalary_targ
を使用している次の例について考えます-
emp_src
に削除が発行されます -
それによって、削除が
salary_src
にカスケードされます。 -
Oracle GoldenGateが、両方の削除をターゲットに送信します。
-
親削除が最初に到達し、
emp_targ
に適用されます。 -
親削除によって、削除が
salary_targ
にカスケードされます。 -
salary_src
のカスケードされた削除が、salary_targ
に適用されます。 -
行は、すでにステップ5で削除されているため、見つかりません。
ReplicatのMAP
文で、ソース表を適切なターゲットにマップし、ソース表がトリガーまたは外部キー・カスケード制約で参照する子表をマップします。データの整合性を保つには、トリガーおよびカスケードされた子操作を適切なターゲットにマップする必要があります。ExtractのTABLE
パラメータに同じ親と子のソース表を含めます。