Préparer les tables pour le traitement

Les attributs de table suivants doivent être traités dans un environnement Oracle GoldenGate pour TimesTen.

Suppression des contraintes CASCADE ON DELETE

Si une table cible dans Oracle TimesTen comporte une clé étrangère, qui indique la clause ON DELETE CASCADE, et si la table qui est la cible de cette clé étrangère est également une cible pour la réplication Oracle GoldenGate, vous devez enlever la clause ON DELETE CASCADE de la définition de clé étrangère pour éviter les erreurs.

Prenons l'exemple suivant, où les tables source sont emp_src et salary_src, et les tables cible emp_targ et salary_targ.

  1. Une suppression est émise pour emp_src.

  2. Il met en cascade une suppression dans salary_src.

  3. Oracle GoldenGate envoie les deux suppressions à la cible.

  4. La suppression parent arrive en premier et est appliquée à emp_targ.

  5. La suppression parent met en cascade une suppression vers salary_targ.

  6. La suppression en cascade de salary_src est appliquée à salary_targ.

  7. Impossible de localiser la ligne car elle a déjà été supprimée à l'étape 5.

Oracle TimesTen ne prend pas en charge la désactivation de contraintes de clé étrangère ou de contraintes de suppression en cascade. Pour enlever ON DELETE CASCADE, vous devez supprimer la table et la recréer sans la clause ON DELETE CASCADE. Vous pouvez également utiliser ALTER TABLE pour enlever la contrainte de clé étrangère et la recréer sans la clause ON DELETE CASCADE.

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

  1. Première clé unique alphanumérique ne contenant pas d'horodatage ni de colonne calculée non matérialisée.

  2. 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.

  1. 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 TABLE et le paramètre de réplication MAP. 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.