Préparer les tables pour le traitement
Les attributs de table suivants doivent être traités dans un environnement Oracle GoldenGate pour Teradata.
Désactivation des déclencheurs et des contraintes en cascade
Désactivez les déclencheurs, les contraintes de suppression en cascade et les contraintes de mise à jour en cascade sur les tables Teradata cible si Oracle GoldenGate réplique des instructions LMD à partir d'une source issue d'un déclencheur ou d'une contrainte en cascade. Si le même déclencheur ou la même contrainte est activé sur la table cible, il devient redondant en raison des données source répliquées et la base de données renvoie une erreur. Prenons l'exemple suivant, où les tables source sont emp_src et salary_src, et les tables cible emp_targ et salary_targ.
-
Une suppression est émise pour
emp_src. -
Il met en cascade une suppression dans
salary_src. -
Oracle GoldenGate envoie les deux suppressions à la cible.
-
La suppression parent arrive en premier et est appliquée à
emp_targ. -
La suppression parent met en cascade une suppression vers
salary_targ. -
La suppression en cascade de
salary_srcest appliquée àsalary_targ. -
Impossible de localiser la ligne car elle a déjà été supprimée à l'étape 5.
Garantir l'unicité des lignes pour les tables
Oracle GoldenGate requiert une forme d'identificateur de ligne unique sur les tables source et cible afin de localiser les lignes cible appropriées pour les mises à jour et les suppressions répliquées.
Sauf si une clause KEYCOLS est utilisée dans l'instruction TABLE ou MAP, Oracle GoldenGate sélectionne un identificateur de ligne à utiliser dans l'ordre de priorité suivant : 1. Clé primaire
-
Première clé unique alphanumérique ne contenant pas d'horodatage ni de colonne calculée non matérialisée.
-
S'il n'existe aucun des types de clé précédents (même si d'autres types de clé peuvent être définis dans la table), Oracle GoldenGate construit une pseudo-clé de toutes les colonnes. que la base de données permet d'être utilisée dans une clé unique, à l'exclusion de celles qui ne sont pas prises en charge par Oracle GoldenGate dans une clé ou de celles qui sont exclues de la configuration Oracle GoldenGate.
Remarque : s'il existe d'autres clés non utilisables sur une table ou s'il n'y a aucune clé dans la table, Oracle GoldenGate consigne un message approprié dans le fichier de rapport. La création d'une clé à partir de toutes les colonnes entrave les performances d'Oracle GoldenGate sur le système source. Sur la cible, cette clé entraîne l'utilisation par le processus Replicat d'une clause WHERE plus grande et moins efficace.
- Si une table n'a pas de clé appropriée ou si vous préférez que les clés existantes ne soient pas utilisées, vous pouvez définir une clé de substitution si la table comporte des colonnes qui contiennent toujours des valeurs uniques. Vous définissez cette clé de substitution en incluant une clause KEYCOLS dans le paramètre d'extraction
TABLEet le paramètre de réplicationMAP. La clé indiquée remplacera toute clé primaire ou unique existante détectée par Oracle GoldenGate. Reportez-vous à TABLE | MAP dans Référence des paramètres et des fonctions pour Oracle GoldenGate.
Utilisation de KEYCOLS pour spécifier une clé personnalisée
Si une table n'a pas d'identificateur de ligne applicable ou si vous préférez que les identificateurs ne soient pas utilisés, vous pouvez définir une clé de substitution, à condition que la table comporte des colonnes qui contiennent toujours des valeurs uniques. Vous définissez cette clé de substitution en incluant une clause KEYCOLS dans le paramètre d'extraction TABLE et le paramètre de réplication MAP. La clé indiquée remplace toute clé primaire ou unique existante détectée par Oracle GoldenGate.
Gestion des opérations massives de mise à jour et de suppression
Les opérations qui mettent à jour ou suppriment un grand nombre de lignes génèrent des mises à jour distinctes et des suppressions pour chaque ligne de la base de données des abonnés. Cela peut entraîner un débordement du gestionnaire de verrous sur le système d'abonnés Teradata et mettre ainsi fin au processus Replicat.
Pour éviter ces erreurs, suspendez temporairement la réplication de ces opérations, puis effectuez-les manuellement sur les systèmes source et cible. Pour suspendre la réplication, utilisez la commande suivante, qui suspend la réplication pour cette session uniquement. Les opérations des autres sessions de cette table sont répliquées normalement.
set session override replication on;
commit;