GETUPDATEBEFORES | IGNOREUPDATEBEFORES
Durée de validité
Extraction et réplication
Description
Utilisez les paramètres GETUPDATEBEFORES et IGNOREUPDATEBEFORES pour déterminer si les images "avant" des colonnes dans les opérations UPDATE sont incluses dans les enregistrements traités par Oracle GoldenGate. Avant que les images contiennent des détails de colonne qui existaient avant la mise à jour d'une ligne.
(Oracle uniquement) Oracle GoldenGate capture par défaut les valeurs de pré-modification et de post-modification pour les opérations de mise à jour dans un seul enregistrement de mise à jour unifié. Pour les autres bases de données, seules les valeurs de pré-modification sont écrites dans le fichier trace. Dans les versions précédentes, la valeur par défaut était de capturer uniquement la valeur après modification. A partir de cette version, les instructions SQL personnalisées (SQLEXEC) s'exécutent désormais une seule fois par opération de mise à jour avec le nouveau format de mise à jour par défaut. Avant cette version, les instructions SQL personnalisées s'exécutaient deux fois, une fois pour la valeur de pré-changement et une fois pour la valeur de post-changement. Si vous utilisez Oracle GoldenGate avec le format de mise à jour unifié, vous pouvez transmettre explicitement la pré ou la post-valeur à l'instruction SQL personnalisée à l'aide des fonctions @BEFORE, @AFTER et @BEFOREAFTER. Bien qu'Oracle GoldenGate puisse utiliser ce format de mise à jour par défaut, l'ancienne caméra de format est conservée s'il existe des paramètres en conflit qui auraient précédemment généré deux enregistrements distincts avant et après la modification. Dans ce cas, un message d'information est consigné dans le fichier de rapport.
Utilisez le paramètre GETUPDATEBEFORES comme suit :
-
dans le fichier de paramètres Extract à extraire avant les images de la source de données.
-
dans le fichier de paramètres Replicat pour inclure les images "avant" dans une opération Replicat.
Vous pouvez comparer les images avant et après pour identifier les résultats nets d'une transaction ou effectuer d'autres calculs delta. Par exemple, si un champ BALANCE est $100 avant une mise à jour et $120 après, une comparaison indiquerait la différence de $20. Vous pouvez utiliser les fonctions de conversion de colonne d'Oracle GoldenGate pour effectuer les comparaisons et les calculs.
Pour référencer des images antérieures dans le fichier de paramètres, utilisez la fonction de conversion @BEFORE. Exemple :
COLMAP (previous = @BEFORE (balance))
GETUPDATEBEFORES est requis lors de l'utilisation de la fonctionnalité de détection et de résolution des conflits (CDR). Reportez-vous à la section Manual Conflict Detection and Resolution pour plus d'informations sur CDR.
Les paramètres GETUPDATEBEFORES et IGNOREUPDATEBEFORES sont propres à la table. Un paramètre reste en vigueur pour toutes les instructions TABLE ou MAP suivantes, jusqu'à ce que l'autre paramètre soit rencontré.
Etant donné que vous pouvez activer ou désactiver ces paramètres de manière sélective entre les instructions MAP, vous pouvez les activer ou les désactiver pour différents threads d'une réplication coordonnée. Indiquez les threads GETUPDATEBEFORES dans un ensemble d'instructions MAP et indiquez les threads IGNOREUPDATEBEFORES dans un autre ensemble d'instructions MAP.
Limites pour GETUPDATESBEFORES :
-
Pour PostgreSQL, avant que les images des colonnes
LOBne soient consignées et ne soient écrites dans les traces. -
Pour SQL Server, les colonnes des types de données
IMAGE,NTEXTetTEXTsont journalisées en tant que valeurNULLpour les opérations de mise à jour d'image avant et les colonnesVARBINARY(MAX),VARCHAR(MAX)etNVARCHAR(MAX)sont journalisées en tant que valeurNULLpour les opérations de mise à jour d'image avant, sauf si la colonne a été mise à jour.
Valeur par défaut
IGNOREUPDATEBEFORES
Syntaxe
GETUPDATEBEFORES | IGNOREUPDATEBEFORES
Exemple
Cet exemple montre comment appliquer GETUPDATEBEFORES et IGNOREUPDATEBEFORES de manière sélective à différentes instructions MAP, chacune représentant un thread différent d'une réplication coordonnée.
GETUPDATEBEFORES
MAP sales.cust, TARGET sales.cust, THREAD (1);
MAP sales.ord, TARGET sales.ord, THREAD (2);
IGNOREUPDATEBEFORES
MAP sales.loc, TARGET sales.loc, THREAD (3);