Zeileneindeutigkeit in Quell- und Zieltabelle sicherstellen
Sofern 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, je nach Anzahl und Typ der protokollierten Constraints (siehe Transaktionslogeinstellungen und -anforderungen).
Hinweis: Die KEYCOLS-Klausel wird für Duality Views (JSON DVs) für JSON-Beziehungen und JSON-Collection-Tabellen (JCTs) nicht unterstützt, weil sie einen einzelnen, vordefinierten Schlüssel (_id) haben.
-
Primärschlüssel, wenn er keine erweiterten
VARCHAR2/NVARCHAR2-Spalten (32K) enthält. Primärschlüssel ohne unsichtbare Spalten. -
Eindeutiger Schlüssel: Eindeutiger Schlüssel ohne unsichtbare Spalten.
Bei einem nicht integrierten Replicat lautet die Auswahl des eindeutigen Schlüssels wie folgt:
-
Erster eindeutiger Schlüssel alphanumerisch ohne virtuelle Spalten, keine UDTs, keine funktionsbasierten Spalten, keine auf Null setzbaren Spalten und keine erweiterten
VARCHAR2/NVARCHAR2-Spalten (32K). Um einen Schlüssel zu unterstützen, der Spalten enthält, die Teil eines unsichtbaren Index sind, müssen Sie den ParameterALLOWINVISIBLEINDEXKEYSin der Oracle GoldenGate-DateiGLOBALSverwenden. -
Erster eindeutiger Schlüssel alphanumerisch ohne virtuelle Spalten, keine UDTs, keine erweiterten
VARCHAR2/NVARCHAR2-Spalten (32K) oder keine funktionsbasierten Spalten, kann jedoch auf Null setzbare Spalten enthalten. Um einen Schlüssel zu unterstützen, der Spalten enthält, die Teil eines unsichtbaren Index sind, müssen Sie den ParameterALLOWINVISIBLEINDEXKEYSin der Oracle GoldenGate-DateiGLOBALSverwenden.
-
-
Nicht auf Null setzbare eindeutige Schlüssel: Mindestens eine Spalte aus einem der eindeutigen Schlüssel darf nicht auf Null gesetzt werden. Dies liegt daran, dass
NOALLOWNULLABLEKEYSder Standardwert ist.
Hinweis: ALLOWNULLABLEKEYS ist für integriertes Replicat nicht gültig.
-
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, die von der Datenbank zugelassen werden. in einem eindeutigen Schlüssel verwendet werden, ausgenommen virtuelle Spalten, UDTs, funktionsbasierte Spalten, erweiterte (32K)
VARCHAR2/NVARCHAR2-Spalten und alle Spalten, die von einem Oracle GoldenGate-Benutzer explizit aus der Oracle GoldenGate-Konfiguration ausgeschlossen werden.Sofern aufgrund der vorstehenden Einschränkungen nicht anders ausgeschlossen, sind unsichtbare Spalten im Pseudo-Schlüssel zulässig.
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.
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 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. Weitere Informationen finden Sie in der Referenz zu Parametern und Funktionen für Oracle GoldenGate.
Wenn die folgenden Kriterien für Oracle Replicat übereinstimmen, müssen Sie einen eindeutigen Index verwenden, der mit den Schlüsselspalten der Quelltabelle übereinstimmt:
-
Der Parameter
KEYCOLSist nicht angegeben. -
Der Parameter
USEALLKEYCOLUMNSist nicht angegeben. -
Der Parameter
ALLOWNULLABLEKEYSist nicht angegeben. -
Quell- und Zielschlüsselspalten stimmen nicht überein.
-
Eindeutige Indexübereinstimmungen mit der Schlüsselspalte der Quelltabelle sind vorhanden.