Inicio de un renovación en una suscripción
La operación de renovación de la réplica de CDC se ha diseñado para sincronizar las tablas de origen y de destino.
Acerca de esta tarea
Las tablas pueden quedar fuera de sincronización por varios motivos, incluidas las cuestiones siguientes:
- Tablas aparcadas
- Se aparca una tabla respecto de la réplica durante un cierto tiempo para realizar cambios (como, por ejemplo, la actualización de la definición de una tabla de origen) y los cambios que tienen lugar en el origen ya no se replican.
- Cambios de configuración
- Puede que sea necesario realizar una renovación cuando se promociona un conjunto de suscripciones a partir de un entorno de prueba para un entorno de producción.
- Operaciones de mantenimiento
- Las grandes operaciones de SQL masivas que se llevan a cabo mientras se presta mantenimiento a las ventanas de la tabla de origen que afecta a una mayoría de filas pueden resincronizarse de forma más rápida utilizando la renovación. La renovación puede ser más rápida que la duplicación a la hora de replicar millones de cambios debido a la posibilidad de realizar cargas masivas de filas en la base de datos de destino.
Cuando tenga una suscripción que contenga una tabla de destino que no se haya sincronizado con la tabla de origen, puede marcar la tabla de origen para una renovación. Las tablas que se han marcado para la renovación y tienen un método de réplica de Duplicar se renovarán antes de que empiece la duplicación.
La réplica de CDC renovará todas las tablas marcadas en una sola suscripción como una operación secuencial que se ejecutará hasta su finalización. Cada tabla se renueva de forma individual de una en una hasta que se terminan de renovar todas las tablas marcadas. La renovación es una operación que se aplica a una sola suscripción, por lo que mientras se está renovando una suscripción, el resto de suscripciones no se ven afectadas; pueden continuar duplicando datos para tablas distintas o renovando tablas, según convenga. Para llevar a cabo una renovación en paralelo, se pueden utilizar varias suscripciones.
Las tablas basadas en reglas no forman parte de una renovación. En Management Console, cuando se inicia una renovación, verá un aviso que indica que las tablas seleccionadas mediante reglas no se renovarán.
La réplica de CDC ofrece dos tipos de operaciones de renovación: renovación estándar y renovación diferencial.
Una renovación estándar genera una copia completa de los datos de una tabla de origen que se envían a la tabla de destino. Esta operación trunca o suprime el contenido de la tabla de destino y, a continuación, inserta el contenido nuevo como si lo hubiera enviado el sistema de origen.
Una renovación diferencial actualiza la tabla de destino aplicando solamente las diferencias entre ésta y la tabla de origen. En lugar de borrar la tabla de destino al principio de la renovación y volver a llenarla de datos, igual que ocurre con la renovación estándar, la renovación diferencial compara cada fila de la tabla de destino con cada fila de la tabla de origen para identificar las filas que faltan, que se han modificado o añadido. La principal ventaja de la renovación diferencial es que la tabla de destino permanece en línea durante la operación de renovación.
Existen tres métodos posibles para la renovación diferencial:
- Sólo renovación
- Lleva a cabo una renovación diferencial cambiando las filas de destino que difieren de las filas de origen.
- Renovación y registro de diferencias
- Lleva a cabo una renovación diferencia y también crea una tabla de registro en los metadatos del motor de réplica de destino para realizar un seguimiento de todos los cambios durante la renovación.
- Registro sólo de diferencias
- Crea y rellena una tabla de registro en los metadatos del motor de réplica de destino para identificar todas las diferencias entre las tablas de origen y de destino.
La realización de una renovación diferencial tiene ciertos requisitos y restricciones:
- La renovación diferencial solamente está disponible para las tablas que utilizan la réplica estándar
- La secuencia de ordenación de las tablas de origen y de destino debe ser idéntica
- Las columnas derivadas en la tabla de origen no reciben soporte
- Se ignorará cualquier columna de destino que se haya correlacionado con expresiones derivadas, constantes o campos de control de diario
- Las columnas de claves de la tabla de destino se deben correlacionar directamente con las columnas de la tabla de origen.
- La tabla de destino debe tener una clave única, ya sea una clave primario o un índice exclusivo con al menos una columna que no admita valores nulos.
Tanto la renovación estándar como la renovación diferencial se pueden precisar más mediante la utilización de una cláusula SQL WHERE para que solamente incluya filas en un rango especificado. Resulta útil para aquellas tablas en que solamente los datos más reciente requieren una renovación.
- Que se haya establecido el punto de captura de tabla, ya sea de forma explícita o mediante la duplicación de la tabla en Management Console o el programa CHCCLP.
- Que se haya establecido el punto de captura para la suscripción (utilizando el mandato SETLOGPOS o el mandato dmsetbookmark donde sea aplicable)
El orden en el que se recuperan los datos de la base de datos depende del tipo de renovación que se haya realizado. Durante una renovación estándar, no se utiliza la clasificación ORDER BY; la base de datos determina el orden en que se devuelven los datos. Durante una renovación diferencial, la réplica de CDC consulta la base de datos utilizando una clasificación ORDER BY en las claves de tabla elegidas en la correlación de tabla para clasificar las tablas de origen y de destino y así determinar sus diferencias.
Cuando se lleva a cabo una renovación con varias tablas, el orden en que se renueva cada tabla individual se basa en el orden del grupo, tal como se haya establecido en la opción Orden de renovación.
Tras finalizar correctamente una renovación, se podrá reiniciar la suscripción para su duplicación. La réplica de CDC procesará después el retraso de los cambios. Para las tablas que no se han renovado, la réplica de CDC seguirá procesando cambios desde la posición en la que terminó la duplicación. Para las tablas que se han renovado, la réplica de CDC procesará todos los cambios que se hayan confirmado tras empezar la renovación de esa tabla.
- Cuando se utiliza la réplica de CDC en una configuración bidireccional, tiene que asegurarse de que se den las condiciones siguientes cuando renueve una tabla del lado A al lado B:
- No se produce ninguna carga de trabajo de aplicación en el lado B para esa tabla mientras se produce la renovación.
- La tabla no se ha duplicado del lado B al lado A.
- Después de finalizar la renovación y antes de añadir de nuevo la carga de trabajo en el lado B, tiene que ejecutar el mandato dmmarktablecapturepoint para esa tabla.
- La renovación diferencial no está disponible para almacenes de datos del motor de réplica de CDC para tecnología Netezza ni del motor de réplica de CDC para FlexRep.
Si no se ha establecido ningún orden de renovación para una suscripción del motor de réplica de CDC para DB2 para z/OS, las tablas se renovarán en orden alfabético.
La funcionalidad de renovación no está disponible para el motor de réplica de CDC para Teradata cuando se está utilizando el programa de utilidad TPUMP.