トリガーおよびカスケード制約の無効化

ターゲットSybase表のトリガー、カスケード削除制約、カスケード更新制約を無効にするか、Oracle GoldenGateデータベース・ユーザーによる変更を無視するように変更します。Oracle GoldenGateでは、トリガーまたはカスケード制約の結果として生成されるDMLがレプリケートされます。同じトリガーや制約がターゲット表でアクティブになった場合、レプリケートされたバージョンのために重複となり、データベースでエラーが返されます。ソース表にemp_srcsalary_src、ターゲット表にemp_targsalary_targを使用している次の例について考えます。

  1. emp_srcに削除が発行されます

  2. それによって、削除がsalary_srcにカスケードされます。

  3. Oracle GoldenGateが、両方の削除をターゲットに送信します。

  4. 親削除が最初に到達し、emp_targに適用されます。

  5. 親削除によって、削除がsalary_targにカスケードされます。

  6. salary_srcからカスケードされた削除がsalary_targに適用されます。

  7. 行は、すでにステップ5で削除されているため、見つかりません。

データベース・セッションの開始時にターゲット・トリガーを無効化するようにReplicatを構成するには、次のステップを実行します。

  1. Replicatユーザーにレプリケーション・ロールを割り当てます。
  2. Replicatパラメータ・ファイルのルート・レベルに、次のパラメータ文を追加します。
    SQLEXEC "set triggers off"