YugabyteDB : Gérer les modifications de schéma

Découvrez comment gérer les modifications de schéma dans Oracle GoldenGate pour YugabyteDB.

Prérequis pour la gestion des modifications de schéma

Pour prendre en charge les modifications de schéma aux niveaux table et colonne dans les bases de données Yugabyte, les configurations suivantes sont requises dans T-Server et les listes gflag principales :

cdcsdk_publication_list_refresh_interval_secs

cdcsdk_enable_dynamic_table_support

Instructions relatives à la gestion des modifications de schéma dans Oracle GoldenGate pour Yugabyte

Les instructions suivantes sont importantes et doivent être prises en compte lors de l'exécution d'opérations LDD sur la base de données Yugabyte :

Gérer les modifications de schéma au niveau de la table

Découvrez comment gérer les modifications de schéma au niveau de la table dans Oracle GoldenGate pour YugabyteDB.

Ajouter une nouvelle table à un processus d'extraction existant

Cette procédure dépend de la configuration de publication de Yugabyte. Il existe deux types de publications :

  1. Publication configurée pour toutes les tables : Dans ce type de publication, les nouvelles tables sont ajoutées dynamiquement et aucune modification n'est requise pour la publication.

  2. Publication configurée pour un ensemble de tables : si une nouvelle table est créée, la publication doit être modifiée pour inclure la nouvelle table.

Ajouter une nouvelle table à un processus Extract existant

Les étapes courantes permettant d'ajouter une nouvelle table pour un processus Extract existant sont les suivantes : 1. Arrêtez le processus d'extraction avant d'apporter des modifications.

  1. Mettez à jour le fichier de paramètres Extract pour ajouter la ou les nouvelles tables à la configuration Extract.

  2. Attendez l'intervalle d'actualisation défini dans cdcsdk_publication_list_refresh_interval_secs.

    Vous pouvez éventuellement autoriser une petite fenêtre de tampon pour vous assurer que la table est entièrement actualisée dans le module CDC.

  3. Redémarrez le traitement Extract une fois l'intervalle d'actualisation terminé.

  4. Effectuez des opérations LMD sur la nouvelle table.

  5. Vérifiez que l'extraction capture les nouveaux enregistrements avec succès.

Ajouter une nouvelle table à un traitement d'extraction existant - Exemple

Prenons le scénario de cet exemple :

Il existe une table avec deux publications configurées :

L'exemple suivant présente les étapes à suivre pour ajouter une nouvelle table à un processus Extract existant en fonction des considérations précédentes :

  1. Arrêtez Ext1 et Ext2.

  2. Créez de nouvelles tables (table2, table3).

  3. Mettez à jour les fichiers de paramètres d'extraction pour Ext1 et Ext2.

  4. Modifiez pub1 pour inclure de nouvelles tables. Pub2 ne requiert aucune modification.

  5. Redémarrez Ext1 et Ext2.

  6. Attendez l'intervalle d'actualisation (cdcsdk_publication_list_refresh_interval_secs).

  7. Effectuez des opérations LMD sur les nouvelles tables et vérifiez que les deux extractions les capturent.

Supprimer une table d'un processus d'extraction

Deux scénarios sont à prendre en compte lors de la suppression d'une table :

La table fait partie d'une publication

Si la table est incluse dans une publication, la suppression de la table n'est pas autorisée. Si vous tentez de supprimer la table dans ce scénario, le flux ou l'emplacement de réplication utilisé par le processus Extract devient inutilisable et vous risquez de rencontrer des erreurs telles que :

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.

Ou

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.

Attention : si de telles erreurs se produisent, la seule solution consiste à annuler l'enregistrement de l'extraction concernée et à l'enregistrer à nouveau. Cette étape est essentielle pour restaurer une valeur operation.This normale. Elle peut également entraîner une perte de données. Il faut donc faire preuve de prudence.

La table ne fait pas partie d'une publication

Si la table n'est incluse dans aucune publication, sa suppression n'a aucun impact sur le flux. Aucune action n'est requise et la réplication se poursuivra comme d'habitude.

Gérer les modifications de schéma au niveau colonne

Découvrez comment gérer les modifications de schéma au niveau des colonnes, telles que l'ajout et la suppression de colonnes dans Oracle GoldenGate pour YugabyteDB.

Ajouter une clé

Pour effectuer une opération ALTER TABLE … ADD COLUMN sur une TABLE qui fait partie d'une publication : 1. Arrêtez le processus Extract avant de commencer à ajouter une colonne à la table. Cela empêche l'abandon du processus Extract.

  1. Ajoutez la colonne du tableau qui est incluse dans la publication à l'aide de la commande suivante :

    ALTER TABLE...ADD COLUMN
  2. Attendez la durée indiquée dans cdcsdk_publication_list_refresh_interval_secs pour vous assurer que le module CDC est actualisé et reconnaît la nouvelle colonne.

  3. Exécutez les opérations LMD (INSERTS, UPDATES ou DELETES) sur la nouvelle colonne.

  4. Redémarrez le processus Extract et vérifiez que les modifications, y compris les opérations LMD sur la nouvelle colonne, ont été capturées.

Déposer une ligne

Pour supprimer une ou plusieurs colonnes d'une table faisant partie d'une publication : 1. Arrêtez le processus Extract. Bien que la suppression d'une colonne n'entraîne généralement pas l'abandon du processus Extract, il est toujours recommandé d'arrêter ce processus avant d'apporter des modifications au schéma.

  1. Exécutez la commande suivante sur la table incluse dans la publication :

    ALTER TABLE ... DROP COLUMN
  2. Attendez la durée indiquée dans cdcsdk_publication_list_refresh_interval_secs pour vous assurer que le module CDC est mis à jour.

  3. Exécutez toutes les opérations LMD (INSERT, UPDATE, DELETE), le cas échéant.

  4. Redémarrez le processus Extract et vérifiez que les opérations LMD sur les colonnes restantes continuent d'être capturées correctement.