Share via


Flujo de trabajo de la replicación transaccional para publicadores de Oracle

La replicación transaccional para publicadores de Oracle está integrada en la arquitectura de publicación de replicación transaccional de Microsoft SQL Server, aunque el proceso de seguimiento de los cambios en el publicador y la entrega de éstos al distribuidor son muy distintos a los de la replicación transaccional estándar. A pesar de las diferencias, las transacciones que se producen en la base de datos de Oracle se aplican al suscriptor en grupos transaccionales coherentes. Las tablas con referencias de claves externas entre ellas conservan sus relaciones de datos cuando se entregan los cambios (las claves externas no se copian en el suscriptor).

[!NOTA]

El seguimiento de los objetos grandes (LOB) se realiza de un modo diferente al de otros tipos de objetos. Para obtener más información, vea la sección sobre consideraciones para los objetos grandes en el tema Consideraciones y limitaciones de diseño de los publicadores de Oracle.

En el siguiente flujo de trabajo se resaltan los pasos clave del proceso de seguimiento y entrega de los cambios del publicador de Oracle.

Seguimiento de los cambios

  1. Un usuario o aplicación lleva a cabo inserciones, actualizaciones o eliminaciones en una o más tablas de Oracle publicadas para replicación.

  2. Se activa un desencadenador del nivel de fila instalado por la replicación en cada tabla publicada de Oracle por cada fila modificada, que almacena información sobre el cambio en la tabla de registro de artículos asociada de la tabla.

  3. Cuando se activa el desencadenador de nivel de fila, se recupera un número de la secuencia HREPL_seq que se asigna a la fila de la tabla de registro que describe la operación DML. Esto garantiza que la replicación va a aplicar los comandos de cambio en el orden correcto en el suscriptor.

  4. Si se produce una actualización de una clave principal, también se activa un desencadenador de nivel de instrucción instalado en la tabla, que permite que varias actualizaciones de claves principales que se producen en la misma instrucción se asocien unas a otras. El identificador de la instrucción se extrae de la secuencia HREPL_Stmt. Se utiliza para controlar correctamente las actualizaciones de claves principales en el suscriptor.

  5. Por cada fila insertada en la tabla de Oracle publicada o eliminada de ella, se inserta una fila en la tabla de registro de artículos asociada. Por cada fila actualizada en la tabla de Oracle, se insertan una fila (la imagen posterior) o dos filas (las imágenes anterior y posterior) en la tabla de registro, dependiendo de si la replicación necesita información sobre el estado anterior de la fila o no.

Entrega de cambios al distribuidor

  1. El Agente de registro del LOG identifica el conjunto de cambios coherentes con la transacción de los registros de artículos que no se han asociado a un intervalo de sondeo y almacena de forma temporal los Id. de las filas de las entradas de la tabla de registro en la tabla HREPL_Poll. El identificador extraído de la secuencia HREPL_Pollid se utiliza para marcar cada entrada de cambio como miembro del conjunto coherente con la transacción, así como para proporcionar un orden de procesamiento para el conjunto con respecto a otros conjuntos.

  2. Al procesar los cambios de una tabla publicada, las filas se recuperan de la tabla de registro; el Id. de sondeo actual de HREPL_Pollid se utiliza para identificar aquellas filas que se van a procesar.

  3. El lote de cambios de la tabla de registro se confirma con una transacción única de la base de datos de distribución y se almacena en las tablas MSrepl_commands y MSrepl_transactions.

El Agente de distribución lee los cambios de la base de datos de distribución y los entrega a los suscriptores tal como están con la replicación transaccional estándar.