YugabyteDB: gestione delle modifiche allo schema

Informazioni sulla gestione delle modifiche allo schema in Oracle GoldenGate per YugabyteDB.

Prerequisiti per la gestione delle modifiche allo schema

Per supportare eventuali modifiche allo schema a livello di tabella e colonna nei database Yugabyte, sono necessarie le configurazioni seguenti sia in Server T che in Elenchi gflag master:

cdcsdk_publication_list_refresh_interval_secs

cdcsdk_enable_dynamic_table_support

Linee guida per la gestione delle modifiche allo schema in Oracle GoldenGate per Yugabyte

Le seguenti linee guida sono importanti e devono essere prese in considerazione quando si eseguono operazioni DDL nel database Yugabyte:

Gestione delle modifiche allo schema a livello di tabella

Informazioni sulla gestione delle modifiche allo schema a livello di tabella in Oracle GoldenGate per YugabyteDB.

Aggiungi una nuova tabella a un processo di estrazione esistente

Questa procedura dipende dalla configurazione di pubblicazione di Yugabyte. Esistono due tipi di pubblicazioni:

  1. Pubblicazione configurata per tutte le tabelle: in questo tipo di pubblicazione, le nuove tabelle vengono aggiunte in modo dinamico e non sono necessarie modifiche alla pubblicazione.

  2. Pubblicazione configurata per un set di tabelle: se viene creata una nuova tabella, la pubblicazione deve essere modificata per includere la nuova tabella.

Aggiungere una nuova tabella a un processo Extract esistente

Di seguito sono riportati i passi comuni per aggiungere una nuova tabella per un processo Extract esistente: 1. Arrestare il processo di estrazione prima di apportare modifiche.

  1. Aggiornare il file dei parametri Extract per aggiungere la nuova tabella o le nuove tabelle alla configurazione Extract.

  2. Attendere l'intervallo di aggiornamento definito in cdcsdk_publication_list_refresh_interval_secs.

    Facoltativamente, consentire una piccola finestra del buffer per garantire che la tabella venga aggiornata completamente nel modulo CDC.

  3. Riavviare il processo di estrazione al termine dell'intervallo di aggiornamento.

  4. Eseguire operazioni DML sulla nuova tabella.

  5. Verificare che l'estrazione acquisisca i nuovi record.

Aggiunta di una nuova tabella a un processo di estrazione esistente - Esempio

Si consideri lo scenario per questo esempio:

Esiste una tabella con due pubblicazioni configurate:

L'esempio seguente fornisce i passi per aggiungere una nuova tabella a un processo Extract esistente in base alle considerazioni precedenti.

  1. Arrestare Ext1 e Ext2.

  2. Creare nuove tabelle (table2, table3).

  3. Aggiornare i file dei parametri di estrazione per Ext1 e Ext2.

  4. Modificare pub1 per includere nuove tabelle. Pub2 non richiede modifiche.

  5. Riavviare Ext1 e Ext2.

  6. Attendere l'intervallo di aggiornamento (cdcsdk_publication_list_refresh_interval_secs).

  7. Eseguire operazioni DML su nuove tabelle e verificare che entrambe le estrazioni le acquisiscano correttamente.

Eliminazione di una tabella da un processo di estrazione

Esistono due scenari da considerare quando si elimina una tabella:

La tabella fa parte di una pubblicazione

Se la tabella è inclusa in una pubblicazione, l'eliminazione della tabella non è consentita. Se si tenta di eliminare la tabella in questo scenario, il flusso o lo slot di replica utilizzato da Extract diventa inutilizzabile e potrebbero verificarsi errori quali:

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.

Oppure

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.

Attenzione: se si verificano tali errori, l'unica soluzione è annullare la registrazione dell'estrazione interessata e registrarla di nuovo. Questo passo è fondamentale per ripristinare il normale operation.This può anche causare perdita di dati. C'è bisogno di cautela.

La tabella non fa parte di una pubblicazione

Se la tabella non è inclusa in alcuna pubblicazione, l'eliminazione non ha alcun impatto sul flusso. Non è richiesta alcuna azione e la replica continuerà come al solito.

Gestione delle modifiche allo schema a livello di colonna

Informazioni sulla gestione delle modifiche allo schema a livello di colonna, ad esempio l'aggiunta e l'eliminazione di colonne in Oracle GoldenGate per YugabyteDB.

Aggiungi colonna

Per eseguire un'operazione ALTER TABLE … ADD COLUMN su una tabella che fa parte di una pubblicazione: 1. Arrestare il processo di estrazione prima di iniziare ad aggiungere una colonna alla tabella. Ciò impedisce che Extract venga interrotto.

  1. Aggiungere la colonna della tabella inclusa nella pubblicazione utilizzando il comando seguente:

    ALTER TABLE...ADD COLUMN
  2. Attendere la durata specificata nel file cdcsdk_publication_list_refresh_interval_secs per assicurarsi che il modulo CDC venga aggiornato e riconosca la nuova colonna.

  3. Eseguire le operazioni DML (INSERTS, UPDATES o DELETES) nella nuova colonna.

  4. Riavviare il processo Extract e verificare che le modifiche, incluse le operazioni DML nella nuova colonna, vengano acquisite correttamente.

Rilasciare una colonna

Per eliminare una o più colonne da una tabella che fa parte di una pubblicazione: 1. Arrestare il processo di estrazione. Sebbene l'eliminazione di una colonna in genere non causi l'interruzione dell'estrazione, si consiglia comunque di interrompere l'estrazione prima di apportare modifiche allo schema.

  1. Eseguire il comando seguente nella tabella inclusa nella pubblicazione:

    ALTER TABLE ... DROP COLUMN
  2. Attendere la durata specificata in cdcsdk_publication_list_refresh_interval_secs per assicurarsi che il modulo CDC sia aggiornato.

  3. Eseguire le operazioni DML (INSERT, UPDATE, DELETE), se necessario.

  4. Riavviare Extract e confermare che le operazioni DML sulle colonne rimanenti continuano a essere acquisite correttamente.