Flux de travail de réplication transactionnelle pour serveurs de publication Oracle

La réplication transactionnelle pour les serveurs de publication Oracle repose sur l'architecture de publication de réplication transactionnelle Microsoft SQL Server, mais le processus de suivi des modifications sur le serveur de publication et leur remise sur le serveur de distribution est considérablement différent de la réplication transactionnelle standard. Malgré les différences, les transactions se produisant dans la base de données Oracle sont appliquées à l'Abonné en groupes transactionnels cohérents. Les tables comportant entre elles des références de clés étrangères conservent leurs relations de données au fur et à mesure de la remise des modifications (les clés étrangères ne sont pas copiées sur l'Abonné).

Notes

Le suivi des objets volumineux (LOB) s'effectue différemment des autres types de données. Pour plus d'informations, consultez la section « Observations sur les objets volumineux » dans la rubrique Problèmes et limitations de conception des serveurs de publication Oracle.

Le flux de travail suivant met en évidence les étapes clé impliquées dans le suivi et la remise des modifications d'un serveur de publication Oracle.

Suivi des modifications

  1. Un utilisateur effectue des insertions, des mises à jour ou des suppressions sur une ou plusieurs tables Oracle publiées pour la réplication.

  2. Un déclencheur de bas niveau installé par la réplication sur chaque table Oracle publiée est exécuté pour chaque ligne modifiée, stockant des informations sur les modifications dans la table du journal de l'article de la table associée.

  3. Lorsque le déclencheur de bas niveau est exécuté, un nombre est récupéré à partir de la séquence HREPL_seq et attribué à la ligne de la table du journal décrivant l'opération DML. Cela garantit que la réplication appliquera les commandes de modifications dans le bon ordre sur l'Abonné.

  4. Si une mise à jour de clé primaire s'est produite, un déclencheur de niveau instruction installé sur la table est également exécuté, permettant à plusieurs mises à jour de clé primaire se produisant dans la même instruction d'être associées entre elles. L'identificateur de l'instruction est extrait de la séquence HREPL_Stmt. Il sert à la bonne gestion des mises à jour de clé primaire sur l'Abonné.

  5. Pour chaque ligne insérée ou supprimée de la table Oracle publiée, une ligne est insérée dans la table du journal de l'article associée. Pour chaque ligne mise à jour dans la table Oracle, une (l'image d'après) ou deux lignes (l'image d'avant et d'après) sont insérées dans la table du journal, selon que la réplication nécessite des informations sur l'état précédent de la ligne.

Remise des modifications sur le serveur de distribution

  1. L'Agent de lecture du journal identifie l'ensemble des modifications transactionnellement cohérentes à partir des journaux des articles n'étant pas encore associés à une fréquence d'interrogation, et stocke temporairement les ID de lignes des entrées de la table de l'article dans la table HREPL_Poll. L'identificateur extrait de la séquence HREPL_Pollid est utilisé pour marquer chaque entrée de modification comme membre de l'ensemble transactionnellement cohérent, ainsi que pour fournir un ordre de traitement pour l'ensemble relatif à d'autres ensembles.

  2. Lors du traitement des modifications pour une table publiée, des lignes sont récupérées de la table du journal, tandis que l'identificateur d'interrogation actuel provenant de HREPL_Pollid sert à identifier les lignes à traiter.

  3. Le traitement de modifications de la table du journal est validé comme une transaction unique dans la base de données de distribution et stocké dans les tables MSrepl_commands et MSrepl_transactions.

Les modifications sont ensuite lues à partir de la base de données de distribution et remises aux abonnés par l'Agent de distribution, comme avec la réplication transactionnelle standard.