Tabellen für die Verarbeitung vorbereiten

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

ON DELETE CASCADE-Kontraints entfernen

Wenn eine Zieltabelle in Oracle TimesTen über einen Fremdschlüssel verfügt, der die ON DELETE CASCADE-Klausel angibt, und wenn die Tabelle, die das Ziel dieses Fremdschlüssels ist, auch ein Ziel für die Oracle GoldenGate-Replikation ist, müssen Sie die ON DELETE CASCADE-Klausel aus der Fremdschlüsseldefinition entfernen, um Fehler zu vermeiden.

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.

Oracle TimesTen unterstützt weder das Deaktivieren von Fremdschlüssel-Constraints noch das Löschen von Kaskaden-Constraints. Um die ON DELETE CASCADE zu entfernen, müssen Sie die Tabelle entweder löschen und ohne die ON DELETE CASCADE-Klausel neu erstellen. Alternativ können Sie mit ALTER TABLE das Fremdschlüssel-Constraint entfernen und ohne die ON DELETE CASCADE-Klausel neu erstellen.

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.