Automatische Konflikterkennung und -auflösung

Wenn Oracle GoldenGate Änderungen zwischen Oracle-Datenbanken repliziert, können Sie Oracle GoldenGate Automatic Conflict Detection and Resolution in den Oracle-Datenbanken konfigurieren und verwalten. Hinweis: Das Feature "Automatische Konflikterkennung und -lösung" ist ab Oracle Database 12c Release 2 (12.2) verfügbar und kann mit Oracle GoldenGate 12c (12.3.0.1) und späteren Releases verwendet werden. Es gibt ein manuelles Feature zur Konflikterkennung und -auflösung, das als Oracle GoldenGate-Konflikterkennung und -auflösung (CDR) bezeichnet wird. Oracle GoldenGate CDR wird in der Replicat-Parameterdatei konfiguriert. Weitere Informationen zu Oracle GoldenGate CDR finden Sie unter Manuelle Konflikterkennung und -behebung.

Allgemeine Informationen zur automatischen Konflikterkennung und -lösung

Wenn Oracle GoldenGate Änderungen zwischen Oracle-Datenbanken repliziert, können Sie die Oracle GoldenGate-Konflikterkennung und -lösung automatisch in diesen Datenbanken konfigurieren und verwalten.

Dieses Feature ist für die Verwendung mit Aktiv/Aktiv-Konfigurationen vorgesehen, bei denen Oracle GoldenGate die Datensynchronisierung zwischen mehreren Datenbanken aufrechterhalten muss, die dieselben Datasets enthalten.

Hinweis: Automatic Conflict Detection and Resolution-(ACDR-)Feature, das nur verfügbar ist, wenn Oracle GoldenGate mit Oracle AI Database verwendet wird. Für Nicht-Oracle-Datenbanken ist ein manuelles Feature zur Konflikterkennung und -lösung (CDR) in Oracle GoldenGate verfügbar. Oracle GoldenGate CDR wird in der Replicat-Parameterdatei konfiguriert.

Automatische Konflikterkennung und -auflösung

Sie können die automatische Konflikterkennung und -lösung in einer Oracle GoldenGate-Konfiguration konfigurieren, die Tabellen zwischen Oracle-Datenbanken repliziert. Um die automatische Konflikterkennung und -auflösung für eine Tabelle zu konfigurieren, müssen Sie die Prozedur ADD_AUTO_CDR im Package DBMS_GOLDENGATE_ADM aufrufen. Als Voraussetzung für die Einrichtung der automatischen Konflikterkennung und -lösung muss der Oracle GoldenGate-Benutzer über die entsprechenden Berechtigungen verfügen. Weitere Informationen zu Benutzerberechtigungen finden Sie unter Benutzerberechtigungen für Oracle AI Database 26ai and Higher erteilen und Benutzerberechtigungen für Oracle Database 21c and Lower erteilen.

Der Administratorbenutzer muss bei der entsprechenden PDB angemeldet sein, wenn er ADD_AUTO_CDR aufruft. Die folgenden Konstanten, die Bit-Flags darstellen, werden jetzt hinzugefügt:

Im folgenden Beispiel wird ein ALTER-Befehl für die Tabelle HR.EMPLOYEES verwendet:

BEGIN
 dbms_goldengate_adm.alter_auto_cdr
 (schema_name => 'HR'
 ,table_name => 'EMPLOYEES'
 ,additional_options => DBMS_GOLDENGATE_ADM.ADDITIONAL_OPTIONS_ADD_KEY_VERSION );
END;
/

Siehe die Beschreibung für additional_options in ADD_AUTO_CDR Procedure der Referenz zu Oracle AI Database PL/SQL-Packages und -Typen.

Wenn Oracle GoldenGate Änderungen erfasst, die von einer Oracle AI Database stammen, wird jede Änderung in einem LCR (Row Logical Change Record) gekapselt. Ein Zeilen-LCR ist eine strukturierte Darstellung einer DML-Zeilenänderung. Jeder Zeilen-LCR enthält den Vorgangstyp, alte Spaltenwerte und neue Spaltenwerte. LCRs mit mehreren Zeilen können Teil einer einzelnen Datenbanktransaktion sein.

Wenn mehrere Replikate einer Tabelle Änderungen an der Tabelle zulassen, kann ein Konflikt auftreten, wenn eine Änderung an derselben Zeile in zwei verschiedenen Datenbanken fast gleichzeitig vorgenommen wird. Oracle GoldenGate repliziert Änderungen mit den Zeilen-LCRs. Es erkennt einen Konflikt, indem die alten Werte im Zeilen-LCR für die anfängliche Änderung aus der Ursprungsdatenbank mit den aktuellen Werten der entsprechenden Tabellenzeile in der Zieldatenbank verglichen werden, die durch die Schlüsselspalten identifiziert werden. Wenn ein Spaltenwert nicht übereinstimmt, tritt ein Konflikt auf.

Nachdem ein Konflikt erkannt wurde, kann Oracle GoldenGate den Konflikt lösen, indem Werte in der Zeile mit einigen Werten aus dem Zeilen-LCR überschrieben, die Werte im Zeilen-LCR ignoriert oder ein Delta berechnet wird, um die Zeilenwerte zu aktualisieren.

Die automatische Konflikterkennung und -auflösung erfordert aus folgenden Gründen keine Anwendungsänderungen:

Anforderungen für automatische Konflikterkennung und -lösung

Die folgenden Hauptanforderungen gelten für die Konfiguration von Automatic CDR in Oracle GoldenGate:

Kompatibilität und Migration

Wenn die Basistabelle in der Quelldatenbank die Spalte KEYVER$$ nicht enthält, die Zielbasistabelle jedoch enthält, führt DELETE und Primary Key Updates zu einem Fehler in der Zieldatenbank für die Auflösung von EARLIEST TIMESTAMP, DELETE ALWAYS WINS und SITE PRIORITY.

Beim Replizieren aus einer Basistabelle, die eine KEYVER$$ in eine Zieltabelle enthält, wird die Spalte KEYVER$$ ignoriert.

Spaltengruppen

Eine Spaltengruppe ist eine logische Gruppierung einer oder mehrerer Spalten in einer replizierten Tabelle. Wenn Sie eine Spaltengruppe hinzufügen, wird die Konflikterkennung und -auflösung für die Spalten in der Spaltengruppe getrennt von den anderen Spalten in der Tabelle ausgeführt.

Wenn Sie eine Tabelle für die Oracle GoldenGate-Konflikterkennung und -auflösung mit der Prozedur ADD_AUTO_CDR konfigurieren, werden alle skalaren Spalten in der Tabelle einer Standardspaltengruppe hinzugefügt. Um andere Spaltengruppen für die Tabelle zu definieren, führen Sie die Prozedur ADD_AUTO_CDR_COLUMN_GROUP aus. Alle Spalten in der Tabelle, die nicht Teil einer benutzerdefinierten Spaltengruppe sind, bleiben in der Standardspaltengruppe für die Tabelle.

Spaltengruppen ermöglichen es verschiedenen Datenbanken, verschiedene Spalten in derselben Zeile nahezu gleichzeitig zu aktualisieren, ohne einen Konflikt zu verursachen. Wenn Spaltengruppen für eine Tabelle konfiguriert werden, können Konflikte vermieden werden, selbst wenn verschiedene Datenbanken dieselbe Zeile in der Tabelle aktualisieren. Ein Konflikt wird nicht erkannt, wenn die Aktualisierungen die Werte von Spalten in verschiedenen Spaltengruppen ändern.

Abbildung 1: Spaltengruppen

Beschreibung des Bildes folgt

Dieses Beispiel zeigt eine Zeile, die in Datenbank A und Datenbank B repliziert wird. Die folgenden beiden Spaltengruppen sind für die replizierte Tabelle in jeder Datenbank konfiguriert:

Mit diesen Spaltengruppen können Datenbank A und Datenbank B dieselbe Zeile nahezu zur gleichen Zeit aktualisieren, ohne einen Konflikt zu verursachen. Insbesondere werden folgende Änderungen vorgenommen:

Da sich die Spalten Office und Title in verschiedenen Spaltengruppen befinden, werden die Änderungen repliziert, ohne dass ein Konflikt erkannt wird. Das Ergebnis ist, dass die Werte in der Zeile in beiden Datenbanken identisch sind, nachdem jede Änderung repliziert wurde.

Stückweise LOB-Aktualisierungen

Eine Gruppe von LOB-Vorgängen, die aus LOB WRITE, LOB ERASE und LOB TRIM bestehen, ist ein stückweises LOB-Update. Wenn eine Tabelle, die LOB-Spalten enthält, für die Konflikterkennung und -auflösung konfiguriert ist, wird jede LOB-Spalte in einer eigenen Spaltengruppe platziert, und die Spaltengruppe verfügt über eine eigene ausgeblendete Zeitstempelspalte. Die Zeitstempelspalte wird beim ersten stückweisen LOB-Vorgang aktualisiert.

Für eine LOB-Spalte wird ein Konflikt wie folgt ermittelt und aufgelöst:

Früheste Konflikterkennung und -lösung mit Zeitstempel

Spalten mit Namen im Format CDRTS$ column group und CDRTS$ROW werden verwendet, um Zeitstempel zu enthalten, die Änderungszeiten für Spaltengruppen und die Zeile widerspiegeln.

Hinweis: Tabellen mit dem Symbol $ oder $$ sind interne oder ausgeblendete Tabellen.

Die DBMS_GOLDENGATE_ADM umfasst die folgenden Verfahren zum Konfigurieren der frühesten und neuesten Zeitstempelauflösung:

Das Feld ADDITIONAL_OPTIONS in ADD_AUTO_CDR() und ALTER_AUTO_CDR() aktiviert die Verwendung des frühesten Zeitstempels. Wenn Sie den frühesten Zeitstempel aktivieren, wird die Versionierung automatisch aktiviert. Dadurch wird die neue ausgeblendete Spalte KEYVER$$ (Versionsnummer) des Typs "Zeitstempel" hinzugefügt. Ein neuer Flag-Wert wird hinzugefügt, um die früheste Zeitstempelverwendung anzugeben. Dieses Feld wird auch der Tabelle DELETE TOMBSTONE hinzugefügt. Löschkonflikte sind der Grund für die erforderliche Versionsnummer. Bei einer frühesten Zeitstempelauflösung können Löschkonflikte, die transparent sein können, nicht nur falsch erfolgreich sein, sie können neue Einfügungen der Zeile (neue Versionen) verhindern. Mit einem Versionszeitstempel kann der Löschvorgang für eine Zeilen-DML für dieselbe Zeilenversion korrekt aufgelöst werden.

Das ursprüngliche Einfügen der Zeile erhält den aktuellen Zeitstempel vom Standardwert. Beim Löschen dieser Zeile werden dann die Versionsnummer und die Zeit, zu der diese Zeile eingefügt wurde, in die Tombstone-Tabelle eingefügt, wenn ein Löschvorgang durchgeführt wird. Bei einem neuen Insert erhält die Versionsnummer standardmäßig erneut den aktuellen Zeitstempel, wodurch ein falscher Konflikt mit den aktuellen Löscheinträgen in der Tombstone-Tabelle vermieden wird.

Beispiel

Angenommen, Sie haben eine Tabelle tab1, die zwischen Datenbanken auf Site 1 und Site 2 global konsistent ist.

Die Tabelle enthält einen (primären) Schlüssel. ACDR verwaltet automatisch eine Schlüsselversion (kv) und einen Zeitstempel (ts) als Spalten für die Basistabelle (ausgeblendet) und die Tombstone-Tabelle. Für Schlüsselversion kv und Zeitstempel ts

Datenbank 1: insert tab1 key1 kv1 ts1

Datenbank 2: delete tab1 key1 kv1 ts1

Einfügen in DELETE TOMBSTONE-Tabelle key1 kv1 ts1

Datenbank 1: insert tab1 key1 kv2 ts2

Ohne Verwendung der Schlüsselversion würde die Einfügung ignoriert, der Löschzeitstempel liegt vor. Wenn die Schlüsselversion verwendet wird, wissen Sie, dass kv2 nicht die Version der Zeile ist, die gelöscht wurde, und das Einfügen erfolgreich ist.

Konflikterkennung und -lösung mit letztem Zeitstempel

Wenn Sie die Prozedur ADD_AUTO_CDR im Package DBMS_GOLDENGATE_ADM ausführen, um eine Tabelle für die automatische Oracle GoldenGate-Konflikterkennung und -auflösung zu konfigurieren, wird der Tabelle eine ausgeblendete Zeitstempelspalte hinzugefügt. Diese ausgeblendete Zeitstempelspalte zeichnet den Zeitpunkt einer Zeilenänderung auf. Diese Informationen werden verwendet, um Konflikte zu erkennen und zu lösen.

Wenn ein Zeilen-LCR angewendet wird, kann ein Konflikt für einen INSERT-, UPDATE- oder DELETE-Vorgang auftreten. In der folgenden Tabelle werden die einzelnen Konflikttypen und deren Lösung beschrieben.

Arbeitsvorgang Konflikterkennung Konfliktauflösung
INSERT Ein Konflikt wird erkannt, wenn die Tabelle denselben Wert für eine Schlüsselspalte wie der neue Wert im Zeilen-LCR aufweist.

Wenn der Zeitstempel des Zeilen-LCR nach dem Zeitstempel in der Tabellenzeile liegt, ersetzen die Werte im Zeilen-LCR die Werte in der Tabelle.

Wenn der Zeitstempel des Zeilen-LCR vor dem Zeitstempel in der Tabellenzeile liegt, wird der Zeilen-LCR verworfen, und die Tabellenwerte werden beibehalten.

UPDATE

In jedem der folgenden Fälle wird ein Konflikt erkannt:

  • Es besteht eine Unstimmigkeit zwischen dem Zeitstempelwert im Zeilen-LCR und dem Zeitstempelwert der entsprechenden Zeile in der Tabelle.

  • Die Übereinstimmung zwischen einem alten Wert in einer Spaltengruppe im Zeilen-LCR stimmt nicht mit dem Spaltenwert in der entsprechenden Tabellenzeile überein. Eine Spaltengruppe ist eine logische Gruppierung einer oder mehrerer Spalten in einer replizierten Tabelle.

  • Die Tabellenzeile existiert nicht. Wenn sich die Zeile in der Tombstone-Tabelle befindet, wird dies als Update-Löschkonflikt bezeichnet.

Wenn ein Wert nicht übereinstimmt und der Zeitstempel des Zeilen-LCR nach dem Zeitstempel in der Tabellenzeile liegt, ersetzen die Werte im Zeilen-LCR die Werte in der Tabelle.

Wenn eine Wertunstimmigkeit vorliegt und der Zeitstempel des Zeilen-LCR vor dem Zeitstempel in der Tabellenzeile liegt, wird der Zeilen-LCR verworfen, und die Tabellenwerte werden beibehalten.

Wenn die Tabellenzeile nicht vorhanden ist und der Zeitstempel des Zeilen-LCR nach dem Zeitstempel in der Tombstone-Tabellenzeile liegt, wird der Zeilen-LCR von einem UPDATE-Vorgang in einen INSERT-Vorgang konvertiert und in die Tabelle eingefügt.

Wenn die Tabellenzeile nicht vorhanden ist und der Zeitstempel des Zeilen-LCR vor dem Zeitstempel in der Tombstone-Tabellenzeile liegt, wird der Zeilen-LCR verworfen.

Wenn die Tabellenzeile nicht vorhanden ist und keine entsprechende Zeile in der Tombstone-Tabelle vorhanden ist, wird der Zeilen-LCR von einem UPDATE-Vorgang in einen INSERT-Vorgang konvertiert und in die Tabelle eingefügt.

DELETE

In jedem der folgenden Fälle wird ein Konflikt erkannt:

  • Es besteht eine Unstimmigkeit zwischen dem Zeitstempelwert im Zeilen-LCR und dem Zeitstempelwert der entsprechenden Zeile in der Tabelle.

  • Die Tabellenzeile existiert nicht.

Wenn der Zeitstempel des Zeilen-LCR nach dem Zeitstempel in der Tabelle liegt, löschen Sie die Zeile aus der Tabelle.

Wenn der Zeitstempel des Zeilen-LCR vor dem Zeitstempel in der Tabelle liegt, wird der Zeilen-LCR verworfen, und die Tabellenwerte werden beibehalten.

Wenn der Löschvorgang erfolgreich war, protokollieren Sie den Zeilen-LCR, indem Sie ihn in die Tombstone-Tabelle einfügen.

Wenn die Tabellenzeile nicht vorhanden ist, protokollieren Sie den Zeilen-LCR, indem Sie ihn in die Tombstone-Tabelle einfügen.

Die folgende Abbildung zeigt die Konfliktauflösung zwischen Datenbank A und Datenbank B: Lösung des letzten Zeitstempelkonflikts mit der letzten Zeitstempelmethode.

Dieses Beispiel zeigt eine Zeile, die in Datenbank A und Datenbank B repliziert wird. Die Datenbankspalten sind Name, RowTS, Office, Title und Salary. Die Spalte RowTS ist die unsichtbare Spalte in beiden Datenbanken. Die Spalte Office in Datenbank A enthält ein Update, und gleichzeitig wird die Spalte Title in Datenbank B aktualisiert. Dies führt zu einem Konflikt, und die Lösung für diesen Konflikt wird mit der neuesten Zeitstempelmethode durchgeführt.

Delta-Konfliktlösung

Bei der Delta-Konflikterkennung tritt ein Konflikt auf, wenn sich ein Wert in der alten Spaltenliste des Zeilen-LCR vom Wert für die entsprechende Zeile in der Tabelle unterscheidet.

Um die Erkennung und Auflösung von Delta-Konflikten für eine Tabelle zu konfigurieren, führen Sie die Prozedur ADD_AUTO_CDR_DELTA_RES im Package DBMS_GOLDENGATE_ADM aus. Die Delta-Auflösungsmethode hängt nicht von einem Zeitstempel oder einer Spalte mit zusätzlicher Auflösung ab. Bei der Lösung von Delta-Konflikten wird der Konflikt gelöst, indem die Differenz zwischen dem neuen und dem alten Wert im Zeilen-LCR zum Wert in der Tabelle hinzugefügt wird. Diese Auflösungsmethode wird im Allgemeinen für Finanzdaten wie einen Kontensaldo verwendet. Beispiel: Wenn ein Banksaldo an zwei Standorten gleichzeitig aktualisiert wird, wird der konvergierte Wert für alle Soll- und Habenbeträge berücksichtigt.

Die folgende Abbildung zeigt ein Beispiel für die Erkennung und Auflösung von Delta-Konflikten.

Abbildung 2: Delta-Konflikterkennung und -auflösung

Beschreibung des Bildes folgt

Dieses Beispiel zeigt eine Zeile, die in Datenbank A und Datenbank B repliziert wird. Die Spalte Balance wird als Spalte angegeben, in der die Delta-Konfliktauflösung ausgeführt wird. Die Spalte RowTS ist die unsichtbare Zeitstempelspalte, um die Uhrzeit jeder Änderung in der Spalte Balance zu verfolgen. In beiden Datenbanken wird der Wert Balance nahezu gleichzeitig in der Zeile geändert (@T20 in Datenbank A und @T22 in Datenbank B). Diese Änderungen führen zu einem Konflikt, und die Lösung von Delta-Konflikten wird verwendet, um den Konflikt wie folgt zu lösen:

Nach der Auflösung des Delta-Konflikts ist der Wert der Spalte Balance für die Zeile in Datenbank A und Datenbank B identisch.

CDR für Standortpriorität

Hinweis: Die Auflösung von SITE PRIORITY hat Vorrang vor allen COLUMN GROUP-Auflösungseinstellungen.

Hinweis: Wenn der Replicat-Parameter SITE PRIORITY nicht vor den entsprechenden Zuordnungsanweisungen in der Parameterdatei platziert wird, funktioniert er nicht. Dieser Parameter muss vor den entsprechenden Map-Anweisungen platziert werden.

Die Prioritätsauflösung wird in der Replicat-Parameterdatei zwischen Quelle und Ziel zur Konfliktauflösung angegeben.

SITE PRIORITY ist für eine Datenbank oder PDB in der Replicat-Parameterdatei mit dem Parameter ACDR SITE_PRIORITY {source_db_name}{OVERWRITE | IGNORE } aktiviert, der angegeben wird, um die SITE PRIORITY-Auflösung für eine Tabelle zu aktivieren.

Wenn die Option OVERWRITE angegeben ist, hat die Quelltabelle Priorität, und Konflikte werden durch OVERWRITE aufgelöst. Wenn hingegen die Option IGNORE angegeben ist, hat die Zieltabelle Priorität, und die Änderungen der Quelltabelle werden in einem Konflikt ignoriert.

Die Auflösung von SITE PRIORITY kann durch das Feld ADDITIONAL_OPTIONS in der Prozedur ADD_AUTO_CDR() im DBMS_GOLDENGATE_ADM-Package und ALTER_AUTO_CDR() durch Festlegen von IGNORE_SITE_PRIORITY deaktiviert werden.

Jede Replicat-Quell-Ziel-Beziehung kann unterschiedlich eingerichtet werden. Daher hängt die Konvergenz vom Benutzer-Setup ab.

CDR mit Zeitstempel "Immer gewinnt" löschen

DELETE ALWAYS WINS wird über das Feld ADDITIONAL_OPTIONS in den DBMS_GOLDENGATE_ADM-Prozeduren ADD_AUTO_CDR() und ALTER_AUTO_CDR() aktiviert. Dies ist erneut eine Methode zur Auflösung von Löschkonflikten, bei der die neueste Zeitstempelauflösung nicht verwendet wird. Daher ist eine Versionierung erforderlich. Wenn Sie DELETE ALWAYS WINS aktivieren, wird die Versionierung automatisch aktiviert. Dadurch wird die neue ausgeblendete Spalte KEYVER$$ (Versionsnummer) des Typs "Zeitstempel" hinzugefügt. Ein neuer Flag-Wert wird auch zu acdrflags_kqldtvc hinzugefügt, um die Verwendung von DELETE ALWAYS WINS anzugeben. Dieses Feld wird auch der Tabelle DELETE TOMBSTONE hinzugefügt. Es gibt dieselben Versionierungsprobleme wie bei der Lösung EARLIEST TIMESTAMP.

Beispiel:

Schlüsselversion kv und Zeitstempel ts

Datenbank 1: insert tab1 key1 kv1 ts1

Datenbank 2: delete tab1 key1 kv1 ts1

Einfügen in Tabelle DELETE TOMBSTONE key1 kv1 ts1

Datenbank 1: insert tab1 key1 kv2 ts2

Ohne die Schlüsselversion würde das Einfügen ignoriert, das Löschen gewinnt immer. Wenn die Schlüsselversion verwendet wird, wissen Sie, dass kv2 nicht die Version der Zeile ist, die gelöscht wurde, und das Einfügen erfolgreich ist.

TOMBSTONE-Tabelle löschen

Die Tabelle DELETE TOMBSTONE ist ein Marker für einen gelöschten Datensatz, um ihn von einem Datensatz zu unterscheiden, der nie vorhanden war. Eine Tabelle DELETE TOMBSTONE enthält mindestens die Schlüsselspalten und den Vorgangszeitstempel. Diese Informationen sind für die Löschkonvergenz erforderlich, da einige eingehende Aktualisierungen und Einfügungen von einem anderen Standort verzögert werden können und der eingehende LCR anhand des Tombstone-Vorgangszeitstempels gefiltert werden muss, um zu bestimmen, ob er angewendet werden soll.

Primärschlüsselaktualisierungen in Delete Tombstone verfolgen

Bei der vollständigen Unterstützung von Primärschlüsselaktualisierungen (PK) müssen Konflikte sowohl für die Zeilen, die durch das Before Image des Schlüssels dargestellt werden, als auch für die Zeile, die durch das After Image des Schlüssels dargestellt wird, behandelt werden. Ein PK-Update ist ein autonomes Löschen und Einfügen. Daher müssen die PK-Aktualisierungskonflikte als Löschen unterstützt werden, wenn Konflikte mit dem Before Image des Schlüssels auftreten und mit dem After Image des Schlüssels (und der Zeile) eingefügt werden.

Die Unterstützung der PK-Aktualisierung als Löschen der Zeile, die durch das Before Image des Schlüssels dargestellt wird, bedeutet, dass sie als Löschvorgang in die Tombstone-Tabelle eingefügt werden sollte. Ein interner Update-Trigger wird hinzugefügt, um ihn in die Tombstone-Tabelle einzufügen, wenn der Primärschlüssel aktualisiert wird (eigentlich der Zeilenkennungsschlüssel, entweder der PK, wenn er vorhanden ist, oder das ausgewählte Vereinigte Königreich mit mindestens einer Spalte, die nicht auf Null gesetzt werden kann). Da eine PK-Aktualisierung zu zwei Konflikten führen kann, werden bis zu zwei Auflösungen auf Zeilenebene versucht, die Zeile mit dem ursprünglichen PK und das Einfügen der Zeile mit dem neuen PK zu löschen.

Beispiel: Verwenden der neuesten Zeitstempelauflösung

Datenbank 1: Update auf tab1 key1 at ts1

Datenbank 2: Update auf tab1 key1 set key1 to key2 ts2

Datenbank 3: Update auf tab1 key2 ts3

In diesem Szenario scheint es, dass auf Zeilenebene die Zeile tab1 mit key1 gelöscht werden muss und die Aktualisierung der Datenbank 3 die letzte Änderung des Zeilenschlüssels tab1 sein muss

  1. Wenn sich die Datenbank 2 stattdessen unter ts3 und die Datenbank 3 unter ts3 befindet, ist die PK-Aktualisierung in Datenbank 2 die endgültige Änderung der tab1-Zeile key2.

Betrachten Sie nun einen Fall, in dem die Datenbank 1 bei ts3, die Datenbank 2 bei ts2 und die Datenbank 3 bei ts1 war. Dann sollte die Aktualisierung auf die tab1-Zeile key1 in Datenbank 1 erfolgreich sein, und die PK-Aktualisierung von Datenbank 2 in tab1-Zeile key2 sollte erfolgreich sein. An dieser Stelle sieht es so aus, als ob die vollständige Auflösung darin besteht, dass sowohl das Löschen am Vorbild als auch das Einfügen am Nachbild separat aufgelöst werden muss. Dies bedeutet, dass sie nicht voneinander abhängig sind und ein Verlust für einen, ist kein Verlust für beide.

Konfiguration von Delta-Konflikterkennung und -lösung

Die Prozedur ADD_AUTO_CDR_DELTA_RES im Package DBMS_GOLDENGATE_ADM konfiguriert die Erkennung und Auflösung von Delta-Konflikten.

Bei der Auflösung von Delta-Konflikten geben Sie eine Spalte an, für die Konflikte ermittelt und aufgelöst werden. Der Konflikt wird ermittelt, wenn der Wert der Spalte im Zeilen-LCR nicht mit dem entsprechenden Wert in der Tabelle übereinstimmt. Der Konflikt wird gelöst, indem die Differenz zwischen den neuen und alten Werten im Zeilen-LCR zum Wert in der Tabelle hinzugefügt wird.

Sie können einen Oracle GoldenGate-Administrator mit der Prozedur GRANT_ADMIN_PRIVILEGE im Package DBMS_GOLDENGATE_ADM konfigurieren.

  1. Melden Sie sich als Oracle GoldenGate-Administrator bei der eingehenden Serverdatenbank an.

  2. Führen Sie die Prozedur ADD_AUTO_CDR aus, und geben Sie die Tabelle an, die für die Erkennung und Auflösung des aktuellen Zeitstempelkonflikts konfiguriert werden soll.

  3. Führen Sie die Prozedur ADD_AUTO_CDR_DELTA_RES aus, und geben Sie die Spalte an, in der die Delta-Konflikterkennung und -auflösung ausgeführt wird.

  4. Wiederholen Sie die vorherigen Schritte in jeder Oracle AI Database, in der die Tabelle repliziert wird.

Beispiel 9-23: Delta-Konflikterkennung und -auflösung für eine Tabelle konfigurieren

In diesem Beispiel wird die Delta-Konflikterkennung und -auflösung für die Spalte order_total in der Tabelle oe.orders konfiguriert.

BEGIN
  DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR(
    SCHEMA_NAME => 'OE',
    TABLE_NAME  => 'ORDERS');
END;
/

BEGIN
  DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_DELTA_RES(
    SCHEMA_NAME => 'OE',
    TABLE_NAME  => 'ORDERS',
    COLUMN_NAME => 'ORDER_TOTAL');
END;
/

Konfigurieren der Erkennung und Lösung von Konflikten mit dem letzten Zeitstempel

Die Prozedur ADD_AUTO_CDR im Package DBMS_GOLDENGATE_ADM konfiguriert die neueste Erkennung und Lösung von Zeitstempelkonflikten. Die Prozedur ADD_AUTO_CDR_COLUMN_GROUP fügt optionale Spaltengruppen hinzu.

Für Oracle AI Database 26ai und höher gibt es zusätzliche Methoden zum Verwalten und Verwalten von ACDR-konfigurierten Tabellen. Sie können die zugrunde liegenden AUTO-CDR-bezogenen Spalten als UNUSED-Spalten beibehalten oder direkt nach dem Aufruf der Prozedur REMOVE_AUTO_CDR löschen.

Wenn Sie die Prozedur ADD_AUTO_CDR auf eine Tabelle anwenden, werden die internen Spalten standardmäßig als nicht verwendet markiert, wenn AUTO_CDR entfernt wird. Nach dem Aufrufen von REMOVE_AUTO_CDR können die nicht verwendeten Spalten zu einem späteren Zeitpunkt manuell gelöscht oder mit einigen zusätzlichen Parametern sofort entfernt werden. Weitere Informationen finden Sie unter Konflikterkennung und -lösung aus einer Tabelle entfernen.

Weitere Informationen finden Sie unter ADD_AUTO_CDR Procedure in der Oracle AI Database PL/SQL-Packages and Types-Referenz

Bei der Erkennung und Auflösung des letzten Zeitstempelkonflikts wird ein Konflikt erkannt, wenn die Zeitstempelspalte des Zeilen-LCR nicht mit dem Zeitstempel der entsprechenden Tabellenzeile übereinstimmt. Der Zeilen-LCR wird angewendet, wenn sein Zeitstempel später ist. Andernfalls wird der Zeilen-LCR verworfen, und die Tabellenzeile wird nicht geändert. Wenn Sie die Prozedur ADD_AUTO_CDR ausführen, fügt sie eine unsichtbare Zeitstempelspalte für jede Zeile in der angegebenen Tabelle hinzu und konfiguriert die Erkennung und Auflösung von Zeitstempelkonflikten. Wenn Sie die Prozedur ADD_AUTO_CDR_COLUMN_GROUP verwenden, um eine oder mehrere Spaltengruppen hinzuzufügen, fügt sie einen Zeitstempel für die Spaltengruppe hinzu und konfiguriert die Erkennung und Auflösung von Zeitstempelkonflikten für die Spaltengruppe.

Sie können einen Oracle GoldenGate-Administrator mit der Prozedur GRANT_ADMIN_PRIVILEGE im Package DBMS_GOLDENGATE_ADM konfigurieren.

  1. Melden Sie sich als Oracle GoldenGate-Administrator bei der eingehenden Serverdatenbank an.

  2. Führen Sie die Prozedur ADD_AUTO_CDR aus, und geben Sie die Tabelle an, die für die Erkennung und Auflösung des aktuellen Zeitstempelkonflikts konfiguriert werden soll.

  3. Führen Sie die Prozedur ADD_AUTO_CDR_COLUMN_GROUP aus, und geben Sie eine oder mehrere Spaltengruppen in der Tabelle an.

  4. Wiederholen Sie die vorherigen Schritte in jeder Oracle AI Database, in der die Tabelle repliziert wird.

Beispiel 9-24 Konfigurieren der neuesten Zeitstempelkonflikterkennung und -auflösung für eine Tabelle

In diesem Beispiel wird die neueste Zeitstempelkonflikterkennung und -auflösung für die Tabelle hr.employees konfiguriert.

BEGIN
  DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR(
    SCHEMA_NAME => 'HR',
    TABLE_NAME  => 'EMPLOYEES');
END;
/

Beispiel 9-25: Spaltengruppen konfigurieren

In diesem Beispiel werden die folgenden Spaltengruppen für die Zeitstempelkonfliktauflösung in der Tabelle HR.EMPLOYEES konfiguriert:

BEGIN
  DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_COLUMN_GROUP(
    SCHEMA_NAME       => 'HR',
    TABLE_NAME        => 'EMPLOYEES',
    COLUMN_LIST       => 'JOB_ID, DEPARTMENT_ID, MANAGER_ID',
    COLUMN_GROUP_NAME => 'JOB_IDENTIFIER_CG');
END;
/

BEGIN
  DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_COLUMN_GROUP(
    SCHEMA_NAME       => 'HR',
    TABLE_NAME        => 'EMPLOYEES',
    COLUMN_LIST       => 'SALARY, COMMISSION_PCT',
    COLUMN_GROUP_NAME => 'COMPENSATION_CG');
END;
/

Konfiguration von Delta-Konflikterkennung und -lösung

Die Prozedur ADD_AUTO_CDR_DELTA_RES im Package DBMS_GOLDENGATE_ADM konfiguriert die Erkennung und Auflösung von Delta-Konflikten.

Bei der Auflösung von Delta-Konflikten geben Sie eine Spalte an, für die Konflikte ermittelt und aufgelöst werden. Der Konflikt wird ermittelt, wenn der Wert der Spalte im Zeilen-LCR nicht mit dem entsprechenden Wert in der Tabelle übereinstimmt. Der Konflikt wird gelöst, indem die Differenz zwischen den neuen und alten Werten im Zeilen-LCR zum Wert in der Tabelle hinzugefügt wird.

Sie können einen Oracle GoldenGate-Administrator mit der Prozedur GRANT_ADMIN_PRIVILEGE im Package DBMS_GOLDENGATE_ADM konfigurieren.

  1. Melden Sie sich als Oracle GoldenGate-Administrator bei der eingehenden Serverdatenbank an.

  2. Führen Sie die Prozedur ADD_AUTO_CDR aus, und geben Sie die Tabelle an, die für die Erkennung und Auflösung des aktuellen Zeitstempelkonflikts konfiguriert werden soll.

  3. Führen Sie die Prozedur ADD_AUTO_CDR_DELTA_RES aus, und geben Sie die Spalte an, in der die Delta-Konflikterkennung und -auflösung ausgeführt wird.

  4. Wiederholen Sie die vorherigen Schritte in jeder Oracle AI Database, in der die Tabelle repliziert wird.

Beispiel 9-26: Delta-Konflikterkennung und -auflösung für eine Tabelle konfigurieren

In diesem Beispiel wird die Delta-Konflikterkennung und -auflösung für die Spalte order_total in der Tabelle oe.orders konfiguriert.

BEGIN
  DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR(
    SCHEMA_NAME => 'OE',
    TABLE_NAME  => 'ORDERS');
END;
/

BEGIN
  DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_DELTA_RES(
    SCHEMA_NAME => 'OE',
    TABLE_NAME  => 'ORDERS',
    COLUMN_NAME => 'ORDER_TOTAL');
END;
/

Automatische Konflikterkennung und -auflösung verwalten

Sie können die automatische Konflikterkennung und -lösung von Oracle GoldenGate in Oracle AI Database mit dem Package DBMS_GOLDENGATE_ADM verwalten.

Konflikterkennung und -lösung für eine Tabelle ändern

Die Prozedur ALTER_AUTO_CDR im Package DBMS_GOLDENGATE_ADM ändert die Konflikterkennung und -auflösung für eine Tabelle.

Die automatische Konflikterkennung und -auflösung von Oracle GoldenGate muss für die Tabelle konfiguriert werden:

  1. Melden Sie sich als Oracle GoldenGate-Administrator bei der eingehenden Serverdatenbank an.

  2. Führen Sie die Prozedur ALTER_AUTO_CDR aus, und geben Sie die Tabelle an, die für die Erkennung und Auflösung des aktuellen Zeitstempelkonflikts konfiguriert werden soll.

  3. Wiederholen Sie alle vorherigen Schritte in jeder Oracle AI Database, in der die Tabelle repliziert wird.

Beispiel 9-27: Ändern der Konflikterkennung und -auflösung für eine Tabelle

In diesem Beispiel wird die Konflikterkennung und -auflösung für die Tabelle HR.EMPLOYEES geändert, um anzugeben, dass Löschkonflikte in einer Tombstone-Tabelle verfolgt werden.

BEGIN
  DBMS_GOLDENGATE_ADM.ALTER_AUTO_CDR(
    SCHEMA_NAME       => 'HR',
    TABLE_NAME        => 'EMPLOYEES',
    TOMBSTONE_DELETES => TRUE);
END;
/

Spaltengruppen ändern

Die Prozedur ALTER_AUTO_CDR_COLUMN_GROUP ändert eine Spaltengruppe.

  1. Melden Sie sich als Oracle GoldenGate-Administrator bei der eingehenden Serverdatenbank an.

  2. Führen Sie die Prozedur ALTER_AUTO_CDR_COLUMN_GROUP aus, und geben Sie eine oder mehrere Spaltengruppen in der Tabelle an.

  3. Wiederholen Sie alle vorherigen Schritte in jeder Oracle AI Database, in der die Tabelle repliziert wird.

Beispiel 9-28: Spaltengruppen ändern

In diesem Beispiel wird die Spalte MANAGER_ID aus der Spaltengruppe JOB_IDENTIFIER_CG für die Tabelle HR.EMPLOYEES entfernt.

BEGIN
  DBMS_GOLDENGATE_ADM.ALTER_AUTO_CDR_COLUMN_GROUP(
    SCHEMA_NAME        => 'HR',
    TABLE_NAME         => 'EMPLOYEES',
    COLUMN_GROUP_NAME  => 'JOB_IDENTIFIER_CG',
    REMOVE_COLUMN_LIST => 'MANAGER_ID');
END;
/

Hinweis: Wenn mehrere Spalten vorhanden sind, verwenden Sie eine durch Komma getrennte Liste.

Tombstone-Zeilen löschen

Die Prozedur PURGE_TOMBSTONES entfernt Tombstone-Zeilen, die vor einem bestimmten Datum und einer bestimmten Uhrzeit aufgezeichnet wurden. Mit dieser Prozedur werden die Tombstone-Zeilen für alle Tabellen entfernt, die für die Konfliktlösung in der Datenbank konfiguriert sind.

Möglicherweise müssen Grabsteinreihen regelmäßig gelöscht werden, damit das Grabstein-Protokoll im Laufe der Zeit nicht zu groß wird.

  1. Melden Sie sich als Oracle GoldenGate-Administrator bei der eingehenden Serverdatenbank an.

  2. Führen Sie die Prozedur PURGE_TOMBSTONES aus, und geben Sie Datum und Uhrzeit ein.

Beispiel 9-29: Tombstone-Zeilen löschen

In diesem Beispiel werden alle Grabsteinzeilen gelöscht, die am 1. Dezember 2015 vor 3:00 Uhr Eastern Standard Time aufgezeichnet wurden. Der Zeitstempel muss im Format TIMESTAMP WITH TIME ZONE eingegeben werden.

EXEC DBMS_GOLDENGATE_ADM.PURGE_TOMBSTONES('2015-12-01 15:00:00.000000 EST');

Online-Neudefinition auf ACDR-Tabellen

Oracle AI Database ermöglicht eine Minderung der Anwendungsinteraktion, wenn Tabellen oder Spalten mit dem Package DBMS_REDEFINITION neu organisiert werden. Mit dem Package DBMS_REDEFINITION können Sie die folgenden Aufgaben ausführen:

Die DBMS_REDFINITION.START_REDEF_TABLE verwaltet automatisch die ausgeblendete Zeitstempelspalte zur Zwischentabelle.

Einzelheiten zum DBMS_REDFINITION-Package finden Sie unter DBMS_REDEFINITION in der Oracle AI Database PL/SQL-Packages and -Typenreferenz.

Konflikterkennung und -lösung aus einer Tabelle entfernen

Mit Oracle AI Database und höher wirkt sich das vollständige Entfernen von Automatic Conflict Detection and Resolution (ACDR) aus der Tabelle weniger auf die Tabelle aus, da die AUTO_CDR-bezogenen Spalten als UNUSED markiert werden, wenn AUTO_CDR entfernt wird.

Nach dem Aufrufen der Prozedur REMOVE_AUTO_CDR können die nicht verwendeten Spalten manuell in einem Wartungsfenster gelöscht werden. Dies ist nützlich für große Tabellen, bei denen der Vorgang ALTER TABLE ... DROP COLUMN ressourcenintensiv ist.

Wenn Sie alle internen AUTO_CDR-Spalten sofort entfernen möchten, wenn Sie die Prozedur REMOVE_AUTO_CDR aufrufen, müssen Sie die Tabelle zuerst mit dem additional_options-Parameter REMOVE_HIDDEN_COLUMNS für die Prozedur ADD_AUTO_CDR oder ALTER_AUTO_CDR markieren.

Verwenden Sie die Prozedur REMOVE_AUTO_CDR im Package DBMS_GOLDENGATE_ADM, um eine Tabelle als UNUSED zu taggen, wodurch die Blockierung minimiert wird. Sie können eine Spalte löschen oder zu einem späteren Zeitpunkt beibehalten.

  1. Melden Sie sich als Oracle GoldenGate-Administrator bei der eingehenden Serverdatenbank an.

  2. Führen Sie die Prozedur REMOVE_AUTO_CDR aus, und geben Sie die Tabelle an.

  3. Wiederholen Sie alle vorherigen Schritte in jeder Oracle AI Database-Instanz, in der die Tabelle repliziert wird.

Beispiel 9-30: Entfernen der Konflikterkennung und -auflösung für eine Tabelle

In diesem Beispiel wird die Konflikterkennung und -auflösung für die Tabelle HR.EMPLOYEES entfernt.

BEGIN
  DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR(
    SCHEMA_NAME => 'HR',
    TABLE_NAME  => 'EMPLOYEES');
END;
/

Sie können Spalten löschen, indem Sie das Flag ADD_AUTO_CDR.REMOVE_HIDDEN_COLUMNS als Parameter additional_flags in der Prozedur ADD_AUTO_CDR verwenden.

Im Folgenden finden Sie ein Beispiel für die Anzeige ausgeblendeter Spalten in einer Tabelle.

Die folgende Abfrage verwendet das Package DBA_UNUSED_COL_TABS, um zu bestimmen, ob nicht verwendete Spalten in der Tabelle EMPLOYEES vorhanden sind.

SELECT OWNER, TABLE_NAME, COUNT
  FROM DBA_UNUSED_COL_TABS
  WHERE OWNER = 'HR'
  AND TABLE_NAME = 'EMPLOYEES'
  ORDER BY OWNER, TABLE_NAME;

Die Ausgabe wird wie folgt angezeigt:

OWNER        TABLE_NAME    COUNT
--------    ------------ ----------
HR            EMPLOYEES      1

In der folgenden Abfrage werden die ausgeblendeten Spalten aufgeführt, die vom System getaggt wurden, als ACDR für die Spaltengruppe in der Tabelle EMPLOYEES entfernt wurde.

SELECT OWNER, TABLE_NAME, COLUMN_ID, COLUMN_NAME, DATA_TYPE, HIDDEN_COLUMN
  FROM DBA_TAB_COLS
  WHERE OWNER = 'HR'
  AND TABLE_NAME = 'EMPLOYEES'
  AND HIDDEN_COLUMN = 'YES' AND USER_GENERATED= 'NO'
  ORDER BY OWNER, TABLE_NAME, COLUMN_ID;

Die Ausgabe wird wie folgt angezeigt:

OWNER        TABLE_NAME    COLUMN_ID  COLUMN_NAME      DATA_TYPE     HIDDEN_COLUMN
------------ ------------ ---------- -------------    ------------ ---------------
HR           EMPLOYEES    SYS_C00014_22092220:30:52$   TIMESTAMP(6)       YES

Spaltengruppen entfernen

Mit Oracle AI Database 26ai und höher wirkt sich das Entfernen von Automatic Conflict Detection and Resolution (ACDR) aus Spaltengruppen weniger auf die Tabelle aus, da die ACDR-bezogenen Spalten als UNUSED markiert sind. Sie können eine Spalte auch löschen oder zu einem späteren Zeitpunkt beibehalten.

Verwenden Sie die Prozedur REMOVE_AUTO_CDR_COLUMN_GROUP im Package DBMS_GOLDENGATE_ADM, um eine Tabelle zu taggen, wodurch die Blockierung minimiert wird. Siehe das Beispiel unter Konflikterkennung und -lösung aus einer Tabelle entfernen.

  1. Melden Sie sich als Oracle GoldenGate-Administrator bei der eingehenden Serverdatenbank an.

  2. Führen Sie die Prozedur REMOVE_AUTO_CDR_COLUMN_GROUP aus, und geben Sie den Namen der Spaltengruppe an.

  3. Wiederholen Sie alle vorherigen Schritte in jeder Oracle AI Database, in der die Tabelle repliziert wird.

Beispiel 9-31: Spaltengruppen entfernen

In diesem Beispiel wird die Spaltengruppe COMPENSATION_CG aus der Tabelle HR.EMPLOYEES entfernt.

BEGIN
  DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR_COLUMN_GROUP(
    SCHEMA_NAME       => 'HR',
    TABLE_NAME        => 'EMPLOYEES',
    COLUMN_GROUP_NAME => 'COMPENSATION_CG');
END;

Delta-Konflikterkennung und -lösung entfernen

Die Prozedur REMOVE_AUTO_CDR_DELTA_RES im Package DBMS_GOLDENGATE_ADM entfernt die Erkennung und Auflösung von Delta-Konflikten für eine Spalte.

Delta-Konflikterkennung und -auflösung müssen für die angegebene Spalte konfiguriert werden.

  1. Melden Sie sich als Oracle GoldenGate-Administrator bei der eingehenden Serverdatenbank an.

  2. Führen Sie die Prozedur REMOVE_AUTO_CDR_DELTA_RES aus, und geben Sie die Spalte an.

  3. Wiederholen Sie alle vorherigen Schritte in jeder Oracle AI Database, in der die Tabelle repliziert wird.

Beispiel 9-32: Entfernen der Delta-Konflikterkennung und -auflösung für eine Tabelle

In diesem Beispiel wird die Delta-Konflikterkennung und -auflösung für die Spalte ORDER_TOTAL in der Tabelle OE.ORDERS entfernt.

BEGIN
  DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR_DELTA_RES(
    SCHEMA_NAME => 'OE',
    TABLE_NAME  => 'ORDERS',
    COLUMN_NAME => 'ORDER_TOTAL');
END;

Automatische Konflikterkennung und -auflösung überwachen

Sie können die automatische Konflikterkennung und -lösung von Oracle GoldenGate in einer Oracle AI Database überwachen, indem Sie Data Dictionary Views abfragen.

Informationen zu den für Konflikte konfigurierten Tabellen anzeigen

In der Ansicht ALL_GG_AUTO_CDR_TABLES werden Informationen zu den Tabellen angezeigt, die für die automatische Konflikterkennung und -auflösung von Oracle GoldenGate konfiguriert sind.

  1. Melden Sie sich bei der Datenbank an.

  2. Fragen Sie die Ansicht ALL_GG_AUTO_CDR_TABLES ab.

Beispiel 9-33: Informationen zu den Tabellen anzeigen, die für die Konflikterkennung und -auflösung konfiguriert sind

Diese Abfrage zeigt die folgenden Informationen zu den Tabellen an, die für die Konflikterkennung und -auflösung konfiguriert sind:

COLUMN TABLE_OWNER FORMAT A15
COLUMN TABLE_NAME FORMAT A15
COLUMN TOMBSTONE_TABLE FORMAT A15
COLUMN ROW_RESOLUTION_COLUMN FORMAT A25

SELECT TABLE_OWNER,
       TABLE_NAME,
       TOMBSTONE_TABLE,
       ROW_RESOLUTION_COLUMN
  FROM ALL_GG_AUTO_CDR_TABLES
  ORDER BY TABLE_OWNER, TABLE_NAME;

Die Ausgabe sieht in etwa wie folgt aus:

TABLE_OWNER     TABLE_NAME      TOMBSTONE_TABLE ROW_RESOLUTION_COLUMN
--------------- --------------- --------------- -------------------------
HR              EMPLOYEES       DT$_EMPLOYEES   CDRTS$ROW
OE              ORDERS          DT$_ORDERS      CDRTS$ROW

Informationen zu Konfliktauflösungsspalten anzeigen

In der Ansicht ALL_GG_AUTO_CDR_COLUMNS werden Informationen zu den Spalten angezeigt, die für die automatische Konflikterkennung und -auflösung von Oracle GoldenGate konfiguriert sind.

Die Spalten können für die automatische Konflikterkennung und -auflösung von Zeilen oder Spalten konfiguriert werden. Die Spalten können für die letzte Zeitstempelkonfliktauflösung in einer Spaltengruppe konfiguriert werden. Darüber hinaus kann eine Spalte für die Auflösung von Delta-Konflikten konfiguriert werden.

  1. Stellen Sie als Oracle GoldenGate-Administrator eine Verbindung zur Datenbank her.

  2. Fragen Sie die Ansicht ALL_GG_AUTO_CDR_COLUMNS ab.

Beispiel 9-34: Informationen zu Spaltengruppen anzeigen

Diese Abfrage zeigt die folgenden Informationen zu den Tabellen an, die für die Konflikterkennung und -auflösung konfiguriert sind:

COLUMN TABLE_OWNER FORMAT A10
COLUMN TABLE_NAME FORMAT A10
COLUMN COLUMN_GROUP_NAME FORMAT A17
COLUMN COLUMN_NAME FORMAT A15
COLUMN RESOLUTION_COLUMN FORMAT A23

SELECT TABLE_OWNER,
       TABLE_NAME,
       COLUMN_GROUP_NAME,
       COLUMN_NAME,
       RESOLUTION_COLUMN
  FROM ALL_GG_AUTO_CDR_COLUMNS
  ORDER BY TABLE_OWNER, TABLE_NAME;

Die Ausgabe sieht in etwa wie folgt aus:

TABLE_OWNE TABLE_NAME COLUMN_GROUP_NAME COLUMN_NAME     RESOLUTION_COLUMN
---------- ---------- ----------------- --------------- -----------------------
HR         EMPLOYEES  COMPENSATION_CG   COMMISSION_PCT  CDRTS$COMPENSATION_CG
HR         EMPLOYEES  COMPENSATION_CG   SALARY          CDRTS$COMPENSATION_CG
HR         EMPLOYEES  JOB_IDENTIFIER_CG MANAGER_ID      CDRTS$JOB_IDENTIFIER_CG
HR         EMPLOYEES  JOB_IDENTIFIER_CG JOB_ID          CDRTS$JOB_IDENTIFIER_CG
HR         EMPLOYEES  JOB_IDENTIFIER_CG DEPARTMENT_ID   CDRTS$JOB_IDENTIFIER_CG
HR         EMPLOYEES  IMPLICIT_COLUMNS$ PHONE_NUMBER    CDRTS$ROW
HR         EMPLOYEES  IMPLICIT_COLUMNS$ LAST_NAME       CDRTS$ROW
HR         EMPLOYEES  IMPLICIT_COLUMNS$ HIRE_DATE       CDRTS$ROW
HR         EMPLOYEES  IMPLICIT_COLUMNS$ FIRST_NAME      CDRTS$ROW
HR         EMPLOYEES  IMPLICIT_COLUMNS$ EMAIL           CDRTS$ROW
HR         EMPLOYEES  IMPLICIT_COLUMNS$ EMPLOYEE_ID     CDRTS$ROW
OE         ORDERS     IMPLICIT_COLUMNS$ ORDER_MODE      CDRTS$ROW
OE         ORDERS     IMPLICIT_COLUMNS$ ORDER_ID        CDRTS$ROW
OE         ORDERS     IMPLICIT_COLUMNS$ ORDER_DATE      CDRTS$ROW
OE         ORDERS     IMPLICIT_COLUMNS$ CUSTOMER_ID     CDRTS$ROW
OE         ORDERS     DELTA$            ORDER_TOTAL
OE         ORDERS     IMPLICIT_COLUMNS$ PROMOTION_ID    CDRTS$ROW
OE         ORDERS     IMPLICIT_COLUMNS$ ORDER_STATUS    CDRTS$ROW
OE         ORDERS     IMPLICIT_COLUMNS$ SALES_REP_ID    CDRTS$ROW

In diesem Beispiel werden die Spalten mit IMPLICIT_COLUMNS$ für den Spaltengruppennamen für die Erkennung und Auflösung von Zeilenkonflikten konfiguriert, sind jedoch nicht Teil einer Spaltengruppe. Die Spalten mit DELTA$ für den Spaltengruppennamen sind für die Delta-Konflikterkennung und -auflösung konfiguriert, und diese Spalten haben keine Auflösungsspalte.

Informationen zu Spaltengruppen anzeigen

In der Ansicht ALL_GG_AUTO_CDR_COLUMN_GROUPS werden Informationen zu den Spaltengruppen angezeigt, die für die automatische Konflikterkennung und -auflösung von Oracle GoldenGate konfiguriert sind.

Sie können die automatische Konflikterkennung und -lösung von Oracle GoldenGate mit der Prozedur ADD_AUTO_CDR im Package DBMS_GOLDENGATE_ADM konfigurieren. Sie können Spaltengruppen mit der Prozedur ADD_AUTO_CDR_COLUMN_GROUP im Package DBMS_GOLDENGATE_ADM konfigurieren.

  1. Stellen Sie als Oracle GoldenGate-Administrator eine Verbindung zur Datenbank her.

  2. Fragen Sie die Ansicht ALL_GG_AUTO_CDR_COLUMN_GROUPS ab.

Beispiel 9-35: Informationen zu Spaltengruppen anzeigen

Diese Abfrage zeigt die folgenden Informationen zu den Tabellen an, die für die Konflikterkennung und -auflösung konfiguriert sind:

COLUMN TABLE_OWNER FORMAT A15
COLUMN TABLE_NAME FORMAT A15
COLUMN COLUMN_GROUP_NAME FORMAT A20
COLUMN RESOLUTION_COLUMN FORMAT A25

SELECT TABLE_OWNER,
       TABLE_NAME,
       COLUMN_GROUP_NAME,
       RESOLUTION_COLUMN
  FROM ALL_GG_AUTO_CDR_COLUMN_GROUPS
  ORDER BY TABLE_OWNER, TABLE_NAME;

Die Ausgabe sieht in etwa wie folgt aus:

TABLE_OWNER     TABLE_NAME      COLUMN_GROUP_NAME    RESOLUTION_COLUMN
--------------- --------------- -------------------- -------------------------
HR              EMPLOYEES       COMPENSATION_CG      CDRTS$COMPENSATION_CG
HR              EMPLOYEES       JOB_IDENTIFIER_CG    CDRTS$JOB_IDENTIFIER_CG