YugabyteDB: Schemaänderungen verarbeiten

Erfahren Sie, wie Sie Schemaänderungen in Oracle GoldenGate für YugabyteDB verarbeiten.

Voraussetzungen für die Behandlung von Schemaänderungen

Um Schemaänderungen auf Tabellen- und Spaltenebene in Yugabyte-Datenbanken zu unterstützen, sind die folgenden Konfigurationen sowohl in T-Server als auch in Master-Gflag-Listen erforderlich:

cdcsdk_publication_list_refresh_interval_secs

cdcsdk_enable_dynamic_table_support

Richtlinien für die Behandlung von Schemaänderungen in Oracle GoldenGate für Yugabyte

Die folgenden Richtlinien sind wichtig und müssen bei der Ausführung von DDL-Vorgängen in der Yugabyte-Datenbank berücksichtigt werden:

Schemaänderungen auf Tabellenebene verarbeiten

Erfahren Sie, wie Sie Schemaänderungen auf Tabellenebene in Oracle GoldenGate für YugabyteDB verarbeiten.

Neue Tabelle zu einem vorhandenen Extraktionsprozess hinzufügen

Dieser Vorgang hängt von der Veröffentlichungskonfiguration von Yugabyte ab. Es gibt zwei Arten von Veröffentlichungen:

  1. Veröffentlichung für alle Tabellen konfiguriert: Bei dieser Art der Veröffentlichung werden neue Tabellen dynamisch hinzugefügt, und es sind keine Änderungen an der Veröffentlichung erforderlich.

  2. Veröffentlichung für eine Gruppe von Tabellen konfiguriert: Wenn eine neue Tabelle erstellt wird, muss die Veröffentlichung so geändert werden, dass sie die neue Tabelle enthält.

Neue Tabelle zu einem bestehenden Extraktionsprozess hinzufügen

Im Folgenden werden die allgemeinen Schritte zum Hinzufügen einer neuen Tabelle für einen vorhandenen Extract-Prozess beschrieben: 1. Stoppen Sie den Extraktionsprozess, bevor Sie Änderungen vornehmen.

  1. Aktualisieren Sie die Extract-Parameterdatei, um die neue Tabelle oder die neuen Tabellen zur Extract-Konfiguration hinzuzufügen.

  2. Warten Sie auf das in cdcsdk_publication_list_refresh_interval_secs definierte Aktualisierungsintervall.

    Lassen Sie optional ein kleines Pufferfenster zu, um sicherzustellen, dass die Tabelle im CDC-Modul vollständig aktualisiert wird.

  3. Starten Sie den Extract-Prozess neu, nachdem das Aktualisierungsintervall abgeschlossen ist.

  4. DML-Vorgänge für die neue Tabelle ausführen

  5. Prüfen Sie, ob der Extract die neuen Datensätze erfolgreich erfasst.

Neue Tabelle zu einem vorhandenen Extraktionsprozess hinzufügen - Beispiel

Betrachten Sie das Szenario für dieses Beispiel:

Eine Tabelle mit zwei konfigurierten Veröffentlichungen ist vorhanden:

Das folgende Beispiel enthält die Schritte zum Hinzufügen einer neuen Tabelle zu einem vorhandenen Extract-Prozess basierend auf den oben genannten Überlegungen:

  1. Stoppen Sie Ext1 und Ext2.

  2. Erstellen Sie neue Tabellen (table2, table3).

  3. Aktualisieren Sie die Exportparameterdateien für Ext1 und Ext2.

  4. Ändern Sie pub1 so, dass neue Tabellen aufgenommen werden. Pub2 erfordert keine Änderungen.

  5. Starten Sie Ext1 und Ext2 neu.

  6. Warten Sie auf das Aktualisierungsintervall (cdcsdk_publication_list_refresh_interval_secs).

  7. Führen Sie DML-Vorgänge für neue Tabellen aus, und prüfen Sie, ob beide Extracts sie erfolgreich erfassen.

Tabelle aus einem Extraktionsprozess löschen

Beim Löschen einer Tabelle müssen zwei Szenarios berücksichtigt werden:

Tabelle ist Teil einer Publikation

Wenn die Tabelle in einer Publikation enthalten ist, ist das Löschen der Tabelle nicht zulässig. Wenn Sie versuchen, die Tabelle in diesem Szenario zu löschen, wird der vom Extract verwendete Stream oder Replikations-Slot unbrauchbar, und es können Fehler auftreten, wie:

2026-03-04 11:21:44 ERROR OGG-30611 Yugabyte has closed the streaming client and has caused the Extract to abend.
Error: ERROR: XX000: LookupByIdRpc(tablet: d092b524eff34d21b45c78ead108122a, num_attempts: 1) failed: Tablet deleted: Table deleted at 2026-03-04 11:21:44 UTC.
CONTEXT: Catalog Version Mismatch: A DDL occurred while processing this query. Try again.LOCATION: YBPrepareCacheRefreshIfNeeded, postgres.c:4160.

Oder

2026-03-04 11:22:51 ERROR OGG-30605 Dropping any table used by the Extract will cause the Extract to abend and disconnect the YDB streaming client.
Error: ERROR: XX000: VirtualWAL initialisation failed for stream_id: afdaa2e91ebc288be74724e8fb780342 & session_id: 51: Table 000033cf00003000800000000000400f not found under stream
CONTEXT: Catalog Version Mismatch: A DDL occurred while processing this query. Try again.LOCATION: YBPrepareCacheRefreshIfNeeded, postgres.c:4160.

Achtung: Wenn solche Fehler auftreten, besteht die einzige Lösung darin, die Registrierung des betroffenen Extract aufzuheben und erneut zu registrieren. Dieser Schritt ist entscheidend, um normale operation.This wiederherzustellen. Dies kann auch zu Datenverlust führen. Daher ist Vorsicht geboten.

Tabelle ist nicht Teil einer Veröffentlichung

Wenn die Tabelle nicht in einer Publikation enthalten ist, hat das Löschen keine Auswirkungen auf den Stream. Es ist keine Aktion erforderlich, und die Replikation wird wie gewohnt fortgesetzt.

Schemaänderungen auf Spaltenebene bearbeiten

Erfahren Sie mehr über die Verarbeitung von Schemaänderungen auf Spaltenebene, wie das Hinzufügen und Löschen von Spalten in Oracle GoldenGate für YugabyteDB.

Spalte hinzufügen

So führen Sie einen Vorgang ALTER TABLE … ADD COLUMN für eine Tabelle aus, die Teil einer Publikation ist: 1. Stoppen Sie den Extract-Prozess, bevor Sie mit dem Hinzufügen einer Spalte zur Tabelle beginnen. Dadurch wird verhindert, dass Extract abbricht.

  1. Fügen Sie die Spalte in der Tabelle, die in der Publikation enthalten ist, mit dem folgenden Befehl hinzu:

    ALTER TABLE...ADD COLUMN
  2. Warten Sie auf die in cdcsdk_publication_list_refresh_interval_secs angegebene Dauer, um sicherzustellen, dass das CDC-Modul aktualisiert und die neue Spalte erkennt.

  3. Führen Sie alle DML-Vorgänge (INSERTS, UPDATES oder DELETES) für die neue Spalte aus.

  4. Starten Sie den Extract-Prozess neu, und prüfen Sie, ob die Änderungen, einschließlich der DML-Vorgänge für die neue Spalte, erfolgreich erfasst wurden.

Eine Spalte ablegen

So löschen Sie Spalten aus einer Tabelle, die Teil einer Publikation ist: 1. Stoppen Sie den Extraktionsprozess. Obwohl das Löschen einer Spalte in der Regel nicht dazu führt, dass der Extract beendet wird, wird empfohlen, den Extract zu stoppen, bevor Schemaänderungen vorgenommen werden.

  1. Führen Sie den folgenden Befehl für die Tabelle aus, die in der Publikation enthalten ist:

    ALTER TABLE ... DROP COLUMN
  2. Warten Sie auf die in cdcsdk_publication_list_refresh_interval_secs angegebene Dauer, um sicherzustellen, dass das CDC-Modul aktualisiert wird.

  3. Führen Sie DML-Vorgänge (INSERT, UPDATE, DELETE) nach Bedarf aus.

  4. Starten Sie Extract neu, und stellen Sie sicher, dass die DML-Vorgänge für die verbleibenden Spalten weiterhin korrekt erfasst werden.