ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES
適用対象
Replicat
説明
ALLOWNOOPUPDATES
およびNOALLOWNOOPUPDATES
では、Replicatがno-op
操作に対応する方法を制御します。no-op操作は、ターゲット表では無効な操作です。次に、これを指定する場合の例を示します。
-
ソース表に、ターゲット表に存在しない列がある、または(
COLSEXCEPT
句を使用して)レプリケーションから除外された列がある。どちらの場合も、そのソース列を更新する場合、Replicat SQL文内のSET
句で使用するターゲット列名がありません。 -
列を現在の値と同じ値に設定する更新が行われる。データベースは変更されなかったため、新しい値は記録されません。しかし、主キーが記録されたため、Oracle GoldenGateはこの操作を変更レコードとして取得しますが、Replicat SQL文の
SET
句に列値がありません。
NOALLOWNOOPUPDATES
が使用されている場合、Replicatは、ソース表とターゲット表にキーが定義されていない場合、またはReplicatでKEYCOLS
が使用されない場合にのみ異常終了します。このような場合、ターゲット表に一意のキーが定義されておらず、ソース列のいずれかで更新操作が実行されると、次のようなエラーが発生します。
ターゲット表TELLERに更新があり、これには一意キーは定義されていません。KEYCOLSを使用してキーを定義できます。ALLOWNOOPUPDATESを使用すると、更新がターゲット・データベースに適用されずに処理されます。APPLYNOOPUPDATESを使用すると、SET句とWHERE句の両方のすべての列を使用して更新が適用されます。
パラメータAPPLYNOOPUPDATES
を使用して、強制的にUPDATE
を適用させることができます。APPLYNOOPUPDATES
は、ALLOWNOOPUPDATES
より優先されます。両方が指定された場合、Replicatは、ソース表とターゲット表のキー列が存在する更新を適用します。
HANDLECOLLISIONS
またはINSERTMISSINGUPDATES
パラメータが使用されているときにALLOWNOOPUPDATES
が指定された場合、およびOracle GoldenGateにすべてのターゲット・キー値がある場合、Oracle GoldenGateは、SET
句およびWHERE
句の表のすべての列を使用して(APPLYNOOPUPDATES
動作を起動して)、UPDATE
を適用します。これは、Oracle GoldenGateが行の存在または欠落を判別するために必要です。欠落している場合、Oracle GoldenGateは、UPDATE
をINSERT
に変換します。
デフォルト
NOALLOWNOOPUPDATES
構文
ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES