Interactions entre les extractions d'une table et les instructions LDD
Oracle GoldenGate prend en charge certains types de données en identifiant la ligne modifiée à partir du flux de données de journalisation, puis en interrogeant la table sous-jacente pour extraire les colonnes modifiées. Par exemple, les mises à jour partielles sur les objets LOB sont prises en charge en identifiant la ligne modifiée et la colonne LOB dans le fichier de journalisation, puis en interrogeant la valeur de la colonne LOB pour la ligne à partir de la table de base. Une technique similaire est employée pour soutenir UDT.
Remarque : l'extraction nécessite uniquement une extraction pour le test UDT lorsque n'utilise pas la prise en charge des objets natifs.
Une telle prise en charge basée sur l'extraction est implémentée en émettant une interrogation Flashback vers la base de données en fonction du SCN (System Change Number) auquel la transaction a été validée. La fonctionnalité Flashback Query présente certaines limites. Certaines opérations LDD constituent des obstacles de sorte que les interrogations Flashback pour obtenir des données avant ces instructions LDD ne réussissent pas. ALTER TABLE MODIFY COLUMN et ALTER TABLE DROP COLUMN sont des exemples de ce type de code LDD.
Par conséquent, en cas de décalage de capture d'extraction, une opération LDD intermédiaire peut entraîner l'échec des demandes d'extraction de données avant l'opération LDD. Dans ce cas, le processus Extract revient en arrière et extrait le cliché actuel des données de la colonne modifiée. Cette approche présente plusieurs limites : tout d'abord, le DDL peut avoir modifié la colonne que le processus Extract doit extraire (par exemple, supposons que le DDL intermédiaire ait ajouté un nouvel attribut au type de données défini par l'utilisateur capturé). Deuxièmement, l'instruction LDD aurait pu modifier l'une des colonnes utilisées par le processus Extract en tant qu'identificateur de ligne logique. Troisièmement, la table aurait pu être renommée avant que le processus Extract n'ait pu extraire les données.
Pour éviter de telles incohérences lors de l'extraction, prenez les précautions suivantes lors de la modification des colonnes.
-
Mettez toutes les instructions LMD en pause dans la table.
-
Attendez que le processus Extract termine la capture de toutes les informations de journalisation restantes et attendez que le processus Replicat termine le traitement des données capturées à partir de la trace (trail). Pour déterminer si la réplication est terminée, exécutez la commande suivante jusqu'à ce qu'un message indiquant qu'il n'y a plus de données à traiter s'affiche.
INFO REPLICAT *group* -
Exécutez le script LDD sur la source.
-
Reprenez les opérations LMD source.