ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES
Gültig für
Replicat
Beschreibung
Verwenden Sie ALLOWNOOPUPDATES und NOALLOWNOOPUPDATES, um zu steuern, wie Replicat auf einen no-op-Vorgang reagiert. Ein No-OP-Vorgang ist ein Vorgang, bei dem keine Auswirkung auf die Zieltabelle besteht. Im Folgenden finden Sie einige Beispiele dafür, wie dies geschehen kann.
-
Die Quelltabelle enthält eine Spalte, die nicht in der Zieltabelle vorhanden ist, oder eine Spalte, die von der Replikation ausgeschlossen wurde (mit einer
COLSEXCEPT-Klausel). Wenn diese Quellspalte aktualisiert wird, gibt es in beiden Fällen keinen Zielspaltennamen, der in derSET-Klausel in der Replicat SQL-Anweisung verwendet werden kann. -
Es wird eine Aktualisierung vorgenommen, bei der eine Spalte auf denselben Wert wie die aktuelle gesetzt wird. Die Datenbank protokolliert den neuen Wert nicht, da er sich nicht geändert hat. Oracle GoldenGate erfasst den Vorgang jedoch als Änderungsdatensatz, weil der Primärschlüssel protokolliert wurde, jedoch kein Spaltenwert für die
SET-Klausel in der Replicat-SQL-Anweisung vorhanden ist.
Wenn NOALLOWNOOPUPDATES verwendet wird, wird Replicat nur dann abgebrochen, wenn für die Quell- und Zieltabellen kein Schlüssel definiert ist oder das Replicat KEYCOLS nicht verwendet. In solchen Fällen, in denen die Zieltabelle keinen eindeutigen Schlüssel definiert hat und ein Aktualisierungsvorgang für eine der Quellspalten ausgeführt wird, tritt ein Fehler auf, der dem folgenden ähnelt:
Encountered an update for target table TELLER, which has no unique key defined. KEYCOLS can be used to define a key. Use ALLOWNOOPUPDATES to process the update without applying it to the target database. Use APPLYNOOPUPDATES to force the update to be applied using all columns in both the SET and WHERE clause.
Sie können den Parameter APPLYNOOPUPDATES verwenden, um die Anwendung von UPDATE zu erzwingen. APPLYNOOPUPDATES setzt ALLOWNOOPUPDATES außer Kraft. Wenn beide angegeben sind, wendet Replicat Updates an, für die Schlüsselspalten für die Quell- und Zieltabellen vorhanden sind.
Wenn ALLOWNOOPUPDATES angegeben wird, wenn der Parameter HANDLECOLLISIONS oder INSERTMISSINGUPDATES verwendet wird, und wenn Oracle GoldenGate alle Zielschlüsselwerte enthält, wendet Oracle GoldenGate eine UPDATE an, indem alle Spalten der Tabelle in der Klausel SET und der Klausel WHERE verwendet werden (das Verhalten von APPLYNOOPUPDATES wird aufgerufen). Dies ist erforderlich, damit Oracle GoldenGate feststellen kann, ob die Zeile vorhanden ist oder fehlt. Wenn er fehlt, konvertiert Oracle GoldenGate die Datei UPDATE in eine Datei INSERT.
Standard
NOALLOWNOOPUPDATES
Syntax
ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES