ADD TRANDATA

Mit ADD TRANDATA können Sie bestimmen, dass Oracle GoldenGate die erforderlichen Transaktionsinformationen aus den Transaktionsdatensätzen erfasst.

Geben Sie vor Verwendung dieses Befehls den Befehl DBLOGIN aus, um eine Datenbankverbindung herzustellen.

ADD TRANDATA ist für die hier aufgeführten Datenbanken gültig:

Bei anderen unterstützten Datenbanken kann es sein, dass diese Funktionalität bereits vorhanden ist oder über die Datenbankschnittstelle konfiguriert werden muss.

In den folgenden Tabellen finden Sie Hinweise zur Verwendung von Platzhaltern für verschiedene Datenbanken bei Verwendung vonADD TRANDATA:

Datenbank Platzhalterverwendung
Db2 LUW, Db2 z/OS Platzhalter kann nur mit Tabellennamen verwendet werden. Keine Schemanamen.
Oracle Platzhalter kann mit Schema- und Tabellennamen verwendet werden. Keine PDB-Namen.
PostgreSQL und SQL Server Platzhalter kann mit Schema- und Tabellennamen verwendet werden.

Db2 for i

Mit ADD TRANDATA können Sie Journale für Daten erstellen. Der Befehl ADD TRANDATA ruft STRJRNPF auf und ist die empfohlene Methode zum Starten der Journalerstellung für Tabellen, da er sicherstellt, dass das erforderliche Journalbildattribut Record Images (IMAGES): *BOTH im Befehl STRJRNPF festgelegt wird.

Db2 LUW

Mit ADD TRANDATA können Sie DATA CAPTURE CHANGES für angegebene Tabellen aktivieren. Standardmäßig setzt ADD TRANDATA den folgenden Befehl an die Datenbank ab:

ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;

Sie können die LONGVAR-Klausel ausschließen, indem Sie die ADD TRANDATA mit der Option EXCLUDELONG verwenden.

Db2 z/OS

Mit ADD TRANDATA können Sie DATA CAPTURE CHANGES für angegebene Tabellen aktivieren. Standardmäßig setzt ADD TRANDATA den folgenden Befehl an die Datenbank ab:

ALTER TABLE name DATA CAPTURE CHANGES;

Oracle Database

Oracle GoldenGate 26ai für Oracle AI Database 26ai und höher unterstützt die Replikation für relationale JSON-Dualitäts-Views und JSON-Collection-Tabellen. Der Befehl ADD TRANDATA ermöglicht zusätzliches Logging für relationale JSON-Dualitätsansichten und JSON-Collection-Tabellen. ADD TRANDATA hat jedoch keine Auswirkungen auf Basistabellen für die JSON-Dualitäts-Views, und es werden keine Transaktionsdaten für Basistabellen hinzugefügt. Weitere Informationen finden Sie unter Voraussetzungen für das Einrichten der Replikation für JSON DV- und JSON-Collection-Tabellen in der Dokumentation zu Oracle GoldenGate Microservices.

Beachten Sie, dass ein Befehl ähnlich dem Folgenden nur für Tabellen und nicht für relationale JSON-Dualitäts-Views und JSON-Collection-Tabellen angewendet wird:

ADD TRANDATA HR.*

Um JSON-Dualitäts-Views und JSON-Collection-Tabellen zu erfassen, müssen Sie den Befehl ADD TRANDATA für jede zu replizierende JSON-Dualitäts-View und JSON-Collection-Tabelle einzeln ausführen. So wird sichergestellt, dass Sie sich der JSON-Dualitäts-Views und JSON-Collection-Tabellen bewusst sind, die zur Replikation eingerichtet werden, um eine Systemüberlastung zu vermeiden.

Hinweis: Platzhalter werden nicht unterstützt, wenn die logische Replikation für JSON Duality Views mit ADD TRANDATA aktiviert wird. JSON-Collection-Tabellen unterstützen jedoch Platzhalter wie normale Tabellen. Daher ermöglicht die Anweisung TABLE/MAP auch die Verwendung von Platzhaltern.

Ab dem Release 21c aktiviert dieser Befehl auch das automatische Capture für eine Tabelle für Oracle Database.

Standardmäßig aktiviert ADD TRANDATA für Oracle das nicht bedingte Logging des Primärschlüssels und das bedingte zusätzliche Logging aller eindeutigen Schlüssel und Fremdschlüssel der angegebenen Tabelle. Weitere Informationen darüber, wie Oracle GoldenGate das zusätzliche Logging für Oracle AI Database verarbeitet, finden Sie unter Eindeutigkeit von Zeilen in Quell- und Zieltabellen sicherstellen.

Verwenden Sie nach Möglichkeit den Befehl ADD SCHEMATRANDATA anstelle des Befehls ADD TRANDATA. Der Befehl ADD SCHEMATRANDATA gewährleistet für Replikationskontinuität bei DML ein Objekt, für das gerade DDL durchgeführt wurde. Mit den Ausschlussparametern können Sie Objekte aus der Schemaspezifikation ausschließen.

Um die Oracle GoldenGate-DDL-Replikationsfunktion zu verwenden, müssen Sie den Befehl ADD SCHEMATRANDATA zum Logging der erforderlichen zusätzlichen Daten ausgeben.

Bei Verwendung von ADD SCHEMATRANDATA können Sie ADD TRANDATA mit der Option COLS verwenden, um Nicht-Schlüsselspalten zu protokollieren, wie die für FILTER-Anweisungen und KEYCOLS-Klauseln in den Parametern TABLE und MAP erforderlich sind.

Hinweis: Sie können "ADD" verwenden

           TRANDATA` for Oracle when DDL support is enabled, but only if you can stop DML on all tables before DDL is performed on them or, if that is not possible, you can guarantee that no users or applications will issue DDL that adds new tables whose names satisfy an object specification in a `TABLE` or `MAP` statement. There must be no possibility that users or applications will issue DDL that changes the key definitions of any tables that are already in the Oracle GoldenGate configuration.
           {: .infoboxnote}

Oracle empfiehlt, bei Verwendung von Oracle GoldenGate die Quelldatenbank in den Force Logging-Modus zu versetzen und das minimale zusätzliche Logging auf Datenbankebene zu aktivieren. Dadurch werden eventuelle Zeilenverkettungsinformationen für Aktualisierungsvorgänge dem Redo-Log hinzugefügt.

Berücksichtigen Sie Folgendes bei der Verwendung von ADD TRANDATA für eine Oracle AI Database:

PostgreSQL

Bei Verwendung dem Befehl ADD TRANDATA wird die Einstellung REPLICA IDENTITY der Tabelle geändert. Die Einstellung REPLICA IDENTITY steuert vor Bildern von Spalten einer Tabelle, die in dem Transaktionslog für UPDATE- oder DELETE-Vorgänge protokolliert werden sollen.

SQL Server

Mit ADD TRANDATA können Sie die erweiterten Logginginformationen angeben, die Oracle GoldenGate zum Rekonstruieren von SQL-Vorgängen benötigt. Das SQL Server-Transaktionslog liefert standardmäßig nicht alle erforderlichen Informationen.

Durch Aktivieren von TRANDATA aktiviert Oracle GoldenGate das SQL Server-Feature "Change Data Capture" für die Datenbank und erstellt eine Change-Data Capture-Tabelle für jede mit TRANDATA aktivierte Instanz.

Syntax

ADD TRANDATA container.owner.table]
[, FILEGROUP filegroup-name]
[, NOSCHEDULINGCOLS | ALLCOLS]
[, ALLOWNONVALIDATEKEYS]
[, PARTIALJSON]
[, PREPARECSN  {WAIT | LOCK | NOWAIT | NONE}]

[container.]owner.table

Gültig für Db2 LUW, Db2 z/OS, Oracle, PostgreSQL und SQL Server.

Die zwei- oder dreiteilige Namensspezifikation. Verwenden Sie den zweiteiligen Namen owner.table für alle unterstützten Datenbanken außer einer mehrmandantenfähigen Oracle-Containerdatenbank.

Verwenden Sie den dreiteiligen Namen container.owner.table für eine mehrmandantenfähige Oracle-Containerdatenbank. Sie können Platzhalter für beliebige Komponenten verwenden. Bei Verwendung mit einem Platzhalter filtert ADD TRANDATA Namen heraus, die mit den Namen von Systemobjekten übereinstimmen. Um ADD TRANDATA für Objekte zu verwenden, die keine Systemobjekte sind, deren Namen aber in einem Platzhaltermuster mit denen von Systemobjekten übereinstimmen, geben Sie in einem Platzhaltermuster ADD TRANDATA für diese Objekte ohne Platzhalter aus.

Wenn Sie den Befehl aus cdb$root ausführen, legen Sie auch die folgende Benutzerberechtigung auf Datenbankseite fest:

ALTER USER userID SET CONTAINER_DATA = ALL  CONTAINER = CURRENT;

schema.table [JOURNAL library/journal] | library/file [JOURNAL library/journal]

Gültig für Db2 for i.

Gibt das SQL-Schema und den Namen einer Tabelle oder die native Library und den Dateinamen an. Wenn ein Standardjournal mit dem Befehl DEFAULTJOURNAL festgelegt wurde, können Sie die Option JOURNAL auslassen. Andernfalls ist sie erforderlich.

FILEGROUP filegroup-name

Gültig für SQL Server.

(Optional) Sie können die Dateigruppe, in der die Staging-Tabellen von SQL Server-Change Data Capture abgelegt werden, angeben. Verwenden sie dazu die Option FILEGROUP mit einem vorhandenen Dateigruppennamen.

ADD TRANDATA owner.table FILEGROUP cdctables

Sie können auch die Option FILEGROUP in der GLOBALS-Datei verwenden, wenn Sie denselben FILEGROUP-Wert für jede Tabelle beim Aktivieren von TRANDATA verwenden müssen.

Das folgende Beispiel zeigt die Einstellung FILEGROUP myFileGroup in der GLOBALS-Datei:

FILEGROUP myFileGroup

Ausgabe:

Logging of supplemental log data is enabled for table dbo.test1 in filegroup
myFileGroup

In diesem Fall verwendet der Befehl ADD TRANDATA myFileGroup für alle Tabellen.

Wenn Sie auch den Parameter FILEGROUP mit ADD TRANDATA verwenden, setzt der Befehl den in der GLOBALS-Datei definierten Dateigruppennamen außer Kraft.

Beispiel: Wenn Sie FILEGROUP myFileGroup in der GLOBALS-Datei festlegen und dann den folgenden ADD TRANDATA-Befehl ausführen:

ADD TRANDATA dbo.* FILEGROUP yourFileGroup

Dann lautet die Ausgabe:

Logging of supplemental log data is enabled for table dbo.test1 in filegroup
yourFileGroup

In diesem Fall verwendet die ADD TRANDATA den yourFileGroup-Wert anstelle von myFileGroup für alle Tabellen.

Wenn Sie den FILEGROUP-Wert weder in GLOBALS noch mit ADD TRANDATA angeben, verwendet die Befehlszeile den FILEGROUP-Standardwert der Datenbank beim Hinzufügen von TRANDATA der Tabelle. Beispiel: Wenn Sie ADD TRANDATA dbo.* ausführen, lautet die Ausgabe:

Logging of supplemental log data is enabled for table dbo.test1 in filegroup
PRIMARY

In diesem Fall lautet der FILEGROUP-Standardwert Primary. Wenn Sie den Befehl INFO TRANDATA ausführen, wird der FILEGROUP-Name als PRIMARY angezeigt.

NOSCHEDULINGCOLS | ALLCOLS

Gültig für Oracle und PostgreSQL.

Ab Oracle GoldenGate 21c ist NOSCHEDULINGCOLS für die Oracle-Datenbank 21c und höher veraltet, wenn die ausgeführte Datenbank Funktionen zur automatischen Erfassung unterstützt.

Diese Optionen erfüllen die Logginganforderungen eines integrierten Replicats, das die Tabellen verarbeitet, die Sie mit ADD TRANDATA angeben.

NOSCHEDULINGCOLS

Nur für Oracle gültig.

Deaktiviert das Logging der Planungsspalten. Standardmäßig aktiviert ADD TRANDATA das nicht bedingte Logging des Primärschlüssels und das bedingte zusätzliche Logging aller eindeutigen Schlüssel und Fremdschlüssel der angegebenen Tabelle. Beim nicht bedingten Logging wird das Schreiben des Primärschlüssels in das Log erzwungen, unabhängig davon, ob der Schlüssel im aktuellen Vorgang geändert wurde. Beim bedingten Logging werden alle Spaltenwerte eines Fremdschlüssels oder eindeutigen Schlüssels protokolliert, wenn mindestens einer davon im aktuellen Vorgang geändert wurde. Der Primärschlüssel, die eindeutigen Schlüssel und die Fremdschlüssel müssen allesamt für den Eingangsserver verfügbar sein, um Abhängigkeiten zu berechnen.

ALLCOLS

Aktiviert das nicht bedingte zusätzliche Logging aller Schlüssel- und Nicht-Schlüsselspalten der Tabelle. Mit dieser Option aktivieren Sie das Logging der Schlüssel, die zum Berechnen von Abhängigkeiten erforderlich sind, sowie aller anderen Spalten, die für Filterung, Konfliktlösung oder andere Zwecke verwendet werden.


Bei PostgreSQL setzt ALLCOLS REPLICA IDENTITY für die Tabelle auf FULL. ALLCOLS wird als Teil des Befehls ADD TRANDATA angegeben, um das Logging aller Spalten für UPDATE- und DELETE-Vorgänge zu aktivieren, selbst wenn diese Spalten nicht geändert wurden.

Bei Tabellen ohne einen Primärschlüssel- oder eindeutigen Index ist die Option ALLCOLS redundant. Syntax:

ADD TRANDATA table_name ALLCOLS

COLS (columns)

Gültig für Oracle.

Mit der Option COLS können bestimmte Nicht-Schlüsselspalten protokolliert werden. Damit können Sie die in einer KEYCOLS-Klausel angegebenen Spalten protokollieren sowie die Spalten protokollieren, die für Filter- oder Bearbeitungsvorgänge benötigt werden. Dies könnte sein, als diese Werte mit einer FETCHCOLS-Klausel in einer TABLE-Anweisung abgerufen werden. Trennen Sie mehrere Spalten durch Kommas, z.B. NAME, ID, DOB.

INCLUDELONG | EXCLUDELONG

Gültig für Db2 LUW.

Steuert, ob der von ADD TRANDATA ausgegebene Befehl ALTER TABLE das Attribut INCLUDE LONGVAR COLUMNS umfasst. INCLUDELONG ist der Standardwert. Wenn ADD TRANDATA mit dieser Option abgesetzt wird, gibt Oracle GoldenGate die folgende Anweisung ab:

ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;

Wenn EXCLUDELONG verwendet wird, lautet der Befehl wie folgt:

ALTER TABLE name DATA CAPTURE CHANGES;

Bei der Verwendung von EXCLUDELONG unterstützt Oracle GoldenGate keine Funktionen, die Before-Image von Tabellen mit LONGVAR-Spalten erfordern. Beispiel: Der Parameter GETUPDATEBEFORES. Um diese Funktion zu unterstützen, müssen Änderungen an LONGVAR-Spalten in den Transaktionslogs sowohl die Before- als auch die After-Images des Spaltenwertes umfassen.

NOKEY

Gültig für Db2 for i, Db2 LUW, Db2 z/OS, Oracle.

Ab Oracle GoldenGate 21c ist NOKEY für Oracle Database 21c und höher veraltet, wenn die ausgeführte Datenbank automatische Erfassungsfunktionen unterstützt.

Unterdrückt das zusätzliche Logging der Primärschlüsselspalten. Verwenden Sie bei NOKEY die Option COLS, um alternative Spalten zu protokollieren, die als Schlüssel dienen können, und kennzeichnen Sie diese Spalten mit die Option KEYCOLS des TABLE- oder MAP-Parameters als Substitutionsspalten.

NOVALIDATE

Gültig für Db2 for i, Db2 LUW, Db2 z/OS, Oracle.

Unterdrückt zusätzliche Informationen zur Tabelle, die von ADD TRANDATA verarbeitet wird. Standardmäßig ist diese Option aktiviert. Die Verarbeitung zusätzlicher Informationen führt zu einer Verzögerung bei der Befehlsantwort. Sie können die Antwortzeit mit dieser Option also erhöhen.

ALLOWNONVALIDATEDKEYS

Gültig für Db2 for i, Db2 LUW, Db2 z/OS, Oracle.

Sie bezieht Primärschlüssel NON VALIDATED- und NOT VALID-Primärschlüssel in das zusätzliche Logging. Diese Schlüssel setzen die normalen Schlüsselauswahlkriterien von Oracle GoldenGate außer Kraft. Wenn Sie den GLOBALS-Parameter ALLOWNONVALIDATEDKEYS verwenden, wird ADD SCHEMATRANDATA mit ALLOWNONVALIDATEDKEYS ausgeführt, unabhängig davon, ob diese Option angegeben ist oder nicht. Standardmäßig werden NON VALIDATED- und NOT VALID-Primärschlüssel nicht aufgezeichnet.

PARTIALJSON

Gültig für Oracle.

Ruft JSON-Teilaktualisierungen auf Tabellenebene ab. Wenn diese Option aktiviert ist, enthält das Redo JSON-Teildatensätze.

Siehe auch Parameter TRANLOGOPTIONS FETCHPARTIALJSON.

PREPARECSN {WAIT | LOCK | NOWAIT | NONE}

Gültig für Oracle für DML und DDL. Bereitet die Tabellen in der Quelle automatisch vor, sodass die Exportdumpdatei von Oracle Data Pump Instanziierungs-CSNs enthält. Replicat verwendet die tabellenbezogene Instanziierungs-CSN, die (beim Import) von Oracle Data Pump festgelegt wird, um Traildatensätze herauszufiltern. Im Ziel füllt der Datenpumpe-Import die Systemtabellen und -Views mit Instanziierungs-SCNs, um die Instanziierungsfilterung in Tabellenebene zu ermöglichen. Verwenden Sie dazu den Parameter DBOPTIONS ENABLE_INSTANTIATION_FILTERING.

WAIT

Warten Sie auf In-Flight-Transaktionen, und bereiten Sie die Tabelleninstanziierung vor.

LOCK

Sperren Sie die Tabelle (als Vorbereitung auf die Tabelleninstanziierung).

NOWAIT

Standardverhalten. Dabei wird die Instanziierung sofort vorbereitet.

NONE

Die Instanziierung wird nicht vorbereitet.

Beispiele


Das unten stehende Beispiel hat eines der folgenden Ergebnisse zur Folge: Der Primärschlüssel wird für eine Oracle-Tabelle protokolliert. Zusätzliche Daten werden für eine SQL Server- oder DB2-Tabelle protokolliert. Dieser Befehl aktiviert auch das automatische Capture für die Tabelle.

ADD TRANDATA hr.employees

Das folgende Beispiel aktiviert das bedingungslose zusätzliche Logging aller Schlüssel- und Nicht-Schlüsselspalten für die Tabelle acct. Dieser Befehl aktiviert auch das automatische Capture für die Tabelle.

ADD TRANDATA hr.employees ALLCOLS

Das folgende Oracle AI Database-Beispiel führt dazu, dass der Primärschlüssel sowie die Nicht-Schlüsselspaltenname und -adresse protokolliert werden. Dieser Befehl aktiviert auch das automatische Capture für die Tabelle.

ADD TRANDATA hr.employees, COLS (name, address)

Im folgenden Oracle AI Database-Beispiel wird verhindert, dass der Primärschlüssel protokolliert wird. Stattdessen werden die Nicht-Schlüsselspalten name und pid protokolliert. Dieser Befehl aktiviert auch das automatische Capture für die Tabelle.

ADD TRANDATA hr.employees, NOKEY, COLS (name, pid)

Mit dem folgenden Beispiel wird das Logging hinzugefügt. Die Tabelle wird aber nicht auf die Instanziierung vorbereitet. Dieser Befehl aktiviert auch das automatische Capture für die Tabelle.

ADD TRANDATA hr.employees PREPARECSN NONE

Im folgenden Beispiel wird die Verarbeitung zusätzlicher Tabelleninformationen unterdrückt. Dieser Befehl aktiviert auch das automatische Capture für die Tabelle.

ADD TRANDATA hr.employees.*name NOVALIDATE