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は、UPDATEINSERTに変換します。

デフォルト

NOALLOWNOOPUPDATES

構文

ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES