GETUPDATEBEFORES | IGNOREUPDATEBEFORES
Gültig für
Extrakt und Replicat
Beschreibung
Verwenden Sie die Parameter GETUPDATEBEFORES und IGNOREUPDATEBEFORES, um zu steuern, ob die Before Images von Spalten in UPDATE-Vorgängen in den Datensätzen enthalten sind, die von Oracle GoldenGate verarbeitet werden. Bevor Bilder Spaltendetails enthalten, die vor der Aktualisierung einer Zeile vorhanden waren.
(nur von Oracle) Oracle GoldenGate erfasst standardmäßig sowohl die Werte vor als auch nach der Änderung für Aktualisierungsvorgänge in einem einzigen einheitlichen Aktualisierungsdatensatz. Bei anderen Datenbanken werden nur die Werte vor der Änderung in die Traildatei geschrieben. In früheren Releases wurde standardmäßig nur der Wert nach der Änderung erfasst. Ab diesem Release werden benutzerdefinierte SQL-Anweisungen (SQLEXEC) jetzt nur einmal pro Aktualisierungsvorgang mit dem neuen Standardaktualisierungsformat ausgeführt. Vor diesem Release werden benutzerdefinierte SQL-Anweisungen zweimal ausgeführt, einmal beim Voreinstellungswert und einmal beim Nach-Änderungswert. Wenn Sie Oracle GoldenGate mit dem einheitlichen Aktualisierungsformat verwenden, können Sie den Vorab- oder Postwert mit den Funktionen @BEFORE, @AFTER und @BEFOREAFTER explizit an die benutzerdefinierte SQL-Anweisung übergeben. Obwohl Oracle GoldenGate dieses Aktualisierungsformat standardmäßig verwenden kann, wird die alte Format-Cam beibehalten, wenn widersprüchliche Parameter vorhanden sind, die zuvor zwei separate Vor- und Nach-Änderungsdatensätze generiert hätten. In diesen Fällen wird eine Informationsmeldung in der Berichtsdatei protokolliert.
Verwenden Sie den Parameter GETUPDATEBEFORES wie folgt:
-
in der Extract-Parameterdatei, die vor Bildern aus der Datenquelle extrahiert werden soll.
-
in der Replicat-Parameterdatei, die vor Images in einen Replicat-Vorgang aufgenommen werden soll.
Sie können vor Bildern mit Nachbildern vergleichen, um die Nettoergebnisse einer Transaktion zu ermitteln oder andere Delta-Berechnungen durchzuführen. Beispiel: Wenn ein BALANCE-Feld $100 vor einem Update und $120 danach beträgt, zeigt ein Vergleich die Differenz von $20 an. Mit den Spaltenkonvertierungsfunktionen von Oracle GoldenGate können Sie die Vergleiche und Berechnungen durchführen.
Um vor Bildern in der Parameterdatei zu referenzieren, verwenden Sie die Konvertierungsfunktion @BEFORE. Beispiel:
COLMAP (previous = @BEFORE (balance))
GETUPDATEBEFORES ist erforderlich, wenn die CDR-(Conflict Detection and Resolution-)Funktion verwendet wird. Weitere Informationen zu CDR finden Sie unter Manuelle Konflikterkennung und -auflösung.
Die Parameter GETUPDATEBEFORES und IGNOREUPDATEBEFORES sind tabellenspezifisch. Ein Parameter bleibt für alle nachfolgenden TABLE- oder MAP-Anweisungen gültig, bis der andere Parameter gefunden wird.
Da Sie diese Parameter zwischen MAP-Anweisungen selektiv aktivieren oder deaktivieren können, können Sie sie für verschiedene Threads eines koordinierten Replicats aktivieren oder deaktivieren. Geben Sie die GETUPDATEBEFORES-Threads in einer Gruppe von MAP-Anweisungen an, und geben Sie die IGNOREUPDATEBEFORES-Threads in einer anderen Gruppe von MAP-Anweisungen an.
Einschränkungen für GETUPDATESBEFORES:
-
Für PostgreSQL, bevor Bilder von
LOB-Spalten nicht protokolliert werden und nicht in die Trails geschrieben werden. -
Bei SQL Server werden die Spalten der Datentypen
IMAGE,NTEXTundTEXTalsNULL-Wert für Vorgänge vor Imageupdates protokolliert. Die SpaltenVARBINARY(MAX),VARCHAR(MAX)undNVARCHAR(MAX)werden alsNULL-Wert für Vorgänge vor Imageupdates protokolliert, es sei denn, die Spalte wurde aktualisiert.
Standard
IGNOREUPDATEBEFORES
Syntax
GETUPDATEBEFORES | IGNOREUPDATEBEFORES
Beispiel
Dieses Beispiel zeigt, wie Sie GETUPDATEBEFORES und IGNOREUPDATEBEFORES selektiv auf verschiedene MAP-Anweisungen anwenden können, von denen jede einen anderen Thread eines koordinierten Replicats darstellt.
GETUPDATEBEFORES
MAP sales.cust, TARGET sales.cust, THREAD (1);
MAP sales.ord, TARGET sales.ord, THREAD (2);
IGNOREUPDATEBEFORES
MAP sales.loc, TARGET sales.loc, THREAD (3);