YugabyteDB: Manejo de Cambios de Esquema

Obtenga información sobre el manejo de cambios de esquema en Oracle GoldenGate para YugabyteDB.

Requisitos para Manejar Cambios de Esquema

Para soportar cualquier cambio de esquema en los niveles de tabla y columna en las bases de datos de Yugabyte, se necesitan las siguientes configuraciones tanto en T-Server como en Listas de indicadores maestros:

cdcsdk_publication_list_refresh_interval_secs

cdcsdk_enable_dynamic_table_support

Directrices para el manejo de cambios de esquema en Oracle GoldenGate para Yugabyte

Las siguientes directrices son importantes y se deben tener en cuenta al realizar operaciones DDL en la base de datos de Yugabyte:

Manejo de Cambios de Esquema a Nivel de Tabla

Obtenga información sobre el manejo de los cambios de esquema de nivel de tabla en Oracle GoldenGate para YugabyteDB.

Adición de una nueva tabla a un proceso de extracción existente

Este procedimiento depende de la configuración de publicación de Yugabyte. Existen dos tipos de publicaciones:

  1. Publicación configurada para todas las tablas: en este tipo de publicación, se agregan nuevas tablas dinámicamente y no se requieren cambios en la publicación.

  2. Publicación configurada para un juego de tablas: si se crea una nueva tabla, la publicación se debe modificar para incluir la nueva tabla.

Agregar una nueva tabla a un proceso de extracción existente

A continuación se muestran los pasos comunes para agregar una nueva tabla para un proceso de extracción existente: 1. Detenga el proceso de extracción antes de realizar cambios.

  1. Actualice el archivo de parámetros de Extract para agregar la nueva tabla o tablas a la configuración de Extract.

  2. Espere a que se defina el intervalo de refrescamiento en cdcsdk_publication_list_refresh_interval_secs.

    Opcionalmente, permita una pequeña ventana de buffer para asegurarse de que la tabla se refresca por completo en el módulo CDC.

  3. Reinicie el proceso de extracción una vez finalizado el intervalo de refrescamiento.

  4. Realizar operaciones DML en la nueva tabla.

  5. Compruebe que Extract captura los nuevos registros correctamente.

Adición de una nueva tabla a un proceso de extracción existente: ejemplo

Considere el escenario de este ejemplo:

Existe una tabla con dos publicaciones configuradas:

El siguiente ejemplo proporciona los pasos para agregar una nueva tabla a un proceso de extracción existente en función de las consideraciones anteriores:

  1. Detenga Ext1 y Ext2.

  2. Cree nuevas tablas (table2, table3).

  3. Actualice los archivos de parámetros de extracción para Ext1 y Ext2.

  4. Modifique pub1 para incluir nuevas tablas. Pub2 no necesita cambios.

  5. Reinicie Ext1 y Ext2.

  6. Espere el intervalo de refrescamiento (cdcsdk_publication_list_refresh_interval_secs).

  7. Realice operaciones DML en tablas nuevas y verifique que ambas extracciones las capturan correctamente.

Borrar una tabla de un proceso de extracción

Hay dos escenarios que se deben tener en cuenta al borrar una tabla:

La tabla forma parte de una publicación

Si la tabla se incluye en una publicación, no se permite borrarla. Si intenta borrar la tabla en este escenario, hace que el flujo o el espacio de replicación utilizados por Extract no se puedan utilizar y puede encontrar errores como:

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.

O bien

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.

Atención: si se producen dichos errores, la única resolución es anular el registro del Extract afectado y volver a registrarlo. Este paso es fundamental para restaurar operation.This normal también puede causar la pérdida de datos. Por lo tanto, se necesita precaución.

La tabla no forma parte de una publicación

Si la tabla no se incluye en ninguna publicación, su borrado no tiene ningún impacto en el flujo. No se requiere ninguna acción y la replicación continuará como de costumbre.

Manejo de Cambios de Esquema a Nivel de Columna

Obtenga información sobre el manejo de cambios de esquema a nivel de columna, como la adición y el borrado de columnas en Oracle GoldenGate para YugabyteDB.

Agregar una Columna

Para realizar una operación ALTER TABLE … ADD COLUMN en una tabla que forma parte de una publicación: 1. Pare el proceso Extract antes de empezar a agregar una columna a la tabla. Esto evita que Extract se interrumpa.

  1. Agregue la columna de la tabla que se incluye en la publicación mediante el siguiente comando:

    ALTER TABLE...ADD COLUMN
  2. Espere la duración especificada en cdcsdk_publication_list_refresh_interval_secs para asegurarse de que el módulo CDC se refresca y reconoce la nueva columna.

  3. Ejecute cualquier operación DML (INSERTS, UPDATES o DELETES) en la nueva columna.

  4. Reinicie el proceso de extracción y verifique que los cambios, incluidas las operaciones DML en la nueva columna, se capturan correctamente.

Borrar una Columna

Borrar una o varias columnas de una tabla que forma parte de una publicación: 1. Detenga el proceso de extracción. Aunque borrar una columna no suele provocar un fin anormal de Extract, se recomienda parar Extract antes de realizar cambios en el esquema.

  1. Ejecute el siguiente comando en la tabla incluida en la publicación:

    ALTER TABLE ... DROP COLUMN
  2. Espere la duración especificada en cdcsdk_publication_list_refresh_interval_secs para asegurarse de que el módulo CDC esté actualizado.

  3. Ejecute cualquier operación DML (INSERT, UPDATE, DELETE), según sea necesario.

  4. Reinicie Extract y confirme que las operaciones DML en las columnas restantes se siguen capturando correctamente.