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
-
Definisce l'intervallo di aggiornamento per l'elenco di pubblicazioni.
-
Eseguire la configurazione in base al tempo di attesa adatto all'ambiente (impostazione predefinita: 900 secondi).
cdcsdk_enable_dynamic_table_support
-
Abilita il supporto della tabella dinamica in CDC.
-
Per impostazione predefinita, è impostato su
true. Confermare che sia esplicitamente vero per Server T e Gflag master.
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:
-
Rispettare sempre l'intervallo
cdcsdk_publication_list_refresh_interval_secsprima di eseguire operazioni DML. -
Arrestare l'estrazione per garantire modifiche sicure allo schema e prevenire potenziali problemi di acquisizione dei dati.
-
Dopo aver riavviato Extract, verificare sempre che le colonne nuove o rimanenti vengano acquisite correttamente.
-
Il database Yugabyte non supporta l'eliminazione di una tabella. Fare riferimento al seguente link per saperne di più:
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:
-
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.
-
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.
-
Aggiornare il file dei parametri Extract per aggiungere la nuova tabella o le nuove tabelle alla configurazione Extract.
-
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.
-
Riavviare il processo di estrazione al termine dell'intervallo di aggiornamento.
-
Eseguire operazioni DML sulla nuova tabella.
-
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:
-
Pubblicazione 1 (pub1): Tabella specifica
-
Pubblicazione 2 (pub2): Tutte le tabelle
-
Due estrazioni (Ext1 con pub1, Ext2 con pub2) con elenchi di tabelle statiche
-
Le operazioni DML nella tabella statica vengono acquisite da entrambe le estrazioni
L'esempio seguente fornisce i passi per aggiungere una nuova tabella a un processo Extract esistente in base alle considerazioni precedenti.
-
Arrestare Ext1 e Ext2.
-
Creare nuove tabelle (table2, table3).
-
Aggiornare i file dei parametri di estrazione per Ext1 e Ext2.
-
Modificare pub1 per includere nuove tabelle. Pub2 non richiede modifiche.
-
Riavviare Ext1 e Ext2.
-
Attendere l'intervallo di aggiornamento (
cdcsdk_publication_list_refresh_interval_secs). -
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.
-
Aggiungere la colonna della tabella inclusa nella pubblicazione utilizzando il comando seguente:
ALTER TABLE...ADD COLUMN -
Attendere la durata specificata nel file
cdcsdk_publication_list_refresh_interval_secsper assicurarsi che il modulo CDC venga aggiornato e riconosca la nuova colonna. -
Eseguire le operazioni DML (INSERTS, UPDATES o DELETES) nella nuova colonna.
-
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.
-
Eseguire il comando seguente nella tabella inclusa nella pubblicazione:
ALTER TABLE ... DROP COLUMN -
Attendere la durata specificata in
cdcsdk_publication_list_refresh_interval_secsper assicurarsi che il modulo CDC sia aggiornato. -
Eseguire le operazioni DML (INSERT, UPDATE, DELETE), se necessario.
-
Riavviare Extract e confermare che le operazioni DML sulle colonne rimanenti continuano a essere acquisite correttamente.