Tabellen für die Verarbeitung vorbereiten

Die folgenden Tabellenattribute müssen in einer Oracle GoldenGate-Umgebung für Teradata adressiert werden.

Trigger deaktivieren und Constraints kaskadieren

Deaktivieren Sie Trigger, kaskadieren Sie Lösch-Constraints, und kaskadieren Sie Aktualisierungs-Constraints für Teradata-Zieltabellen, wenn Oracle GoldenGate DML aus einer Quelle repliziert, die aus einem Trigger- oder Kaskadierungs-Constraint aufgetreten ist. Wenn derselbe Trigger oder das gleiche Constraint in der Zieltabelle aktiviert wird, wird er aufgrund der replizierten Quelldaten redundant, und die Datenbank gibt einen Fehler zurück. Betrachten Sie das folgende Beispiel, bei dem die Quelltabellen emp_src und salary_src und die Zieltabellen emp_targ und salary_targ sind.

  1. Ein Löschvorgang wird für emp_src ausgeführt.

  2. Ein Löschvorgang wird in salary_src kaskadiert.

  3. Oracle GoldenGate sendet beide Löschvorgänge an das Ziel.

  4. Der übergeordnete Löschvorgang kommt zuerst an und wird auf emp_targ angewendet.

  5. Der übergeordnete Löschvorgang kaskadiert einen Löschvorgang in salary_targ.

  6. Der kaskadierte Löschvorgang aus salary_src wird auf salary_targ angewendet.

  7. Die Zeile kann nicht gefunden werden, da sie bereits in Schritt 5 gelöscht wurde.

Eindeutigkeit der Zeilen für Tabellen sicherstellen

Für Oracle GoldenGate ist eine eindeutige Zeilen-ID in den Quell- und Zieltabellen erforderlich, um die richtigen Zielzeilen für replizierte Aktualisierungen und Löschvorgänge zu finden.

Wenn keine KEYCOLS-Klausel in der TABLE- oder MAP-Anweisung verwendet wird, wählt Oracle GoldenGate eine Zeilen-ID aus, die in der folgenden Prioritätsreihenfolge verwendet werden soll: 1. Primärschlüssel

  1. Erster eindeutiger Schlüssel alphanumerisch, der keinen Zeitstempel oder keine nicht materialisierte berechnete Spalte enthält.

  2. Wenn keiner der oben genannten Schlüsseltypen vorhanden ist (auch wenn andere Schlüsseltypen in der Tabelle definiert sind), erstellt Oracle GoldenGate einen Pseuderschlüssel aller Spalten dass die Datenbank die Verwendung in einem eindeutigen Schlüssel zulässt, ausgenommen diejenigen, die von Oracle GoldenGate nicht in einem Schlüssel unterstützt werden, oder solche, die von der Oracle GoldenGate-Konfiguration ausgeschlossen sind.

Hinweis: Wenn andere, nicht verwendbare Schlüssel in einer Tabelle vorhanden sind oder keine Schlüssel in der Tabelle vorhanden sind, protokolliert Oracle GoldenGate eine entsprechende Meldung in der Berichtsdatei. Wenn Sie einen Schlüssel aus allen Spalten erstellen, wird die Performance von Oracle GoldenGate im Quellsystem beeinträchtigt. Auf dem Ziel führt dieser Schlüssel dazu, dass Replicat eine größere, weniger effiziente WHERE-Klausel verwendet.

  1. Wenn eine Tabelle über keinen geeigneten Schlüssel verfügt oder die vorhandenen Schlüssel nicht verwendet werden sollen, können Sie einen Ersatzschlüssel definieren, wenn die Tabelle Spalten enthält, die immer eindeutige Werte enthalten. Sie definieren diesen Ersatzschlüssel, indem Sie eine KEYCOLS-Klausel in den Extract-Parameter TABLE und den Replicat-Parameter MAP aufnehmen. Der angegebene Schlüssel überschreibt alle vorhandenen Primär- oder eindeutigen Schlüssel, die Oracle GoldenGate findet. Siehe TABLE | MAP in der Referenz zu Parametern und Funktionen für Oracle GoldenGate.

Verwenden von KEYCOLS zur Angabe eines benutzerdefinierten Schlüssels

Wenn eine Tabelle keine anwendbare Zeilen-ID aufweist oder wenn Sie es vorziehen, dass IDs nicht verwendet werden, können Sie einen Ersatzschlüssel definieren, vorausgesetzt, die Tabelle enthält Spalten, die immer eindeutige Werte enthalten. Sie definieren diesen Ersatzschlüssel, indem Sie eine KEYCOLS-Klausel in den Extract TABLE-Parameter und den Replicat MAP-Parameter aufnehmen. Der angegebene Schlüssel überschreibt alle vorhandenen Primär- oder eindeutigen Schlüssel, die Oracle GoldenGate findet.

Massive Aktualisierungs- und Löschvorgänge verarbeiten

Vorgänge, die eine große Anzahl von Zeilen aktualisieren oder löschen, generieren diskrete Aktualisierungen und Löschvorgänge für jede Zeile in der Subscriber-Datenbank. Dies könnte zu einem Lock Manager-Überlauf auf dem Teradata-Subscriber-System führen und somit den Replicat-Prozess beenden.

Um diese Fehler zu vermeiden, unterbrechen Sie die Replikation für diese Vorgänge vorübergehend, und führen Sie sie dann manuell auf dem Quell- und Zielsystem aus. Um die Replikation zu unterbrechen, verwenden Sie den folgenden Befehl, mit dem die Replikation nur für diese Session unterbrochen wird. Die Vorgänge anderer Sessions in dieser Tabelle werden normal repliziert.

set session override replication on;
commit;