Garantie de l'unicité des rangées dans les tableaux source et cible

A moins qu'une clause KEYCOLS ne soit utilisée dans l'instruction TABLE ou MAP, Oracle GoldenGate sélectionne un identificateur de ligne à utiliser dans l'ordre de priorité suivant, en fonction du nombre et du type de contraintes consignées (reportez-vous à Paramètres et exigences du journal des transactions).

Remarque : la clause KEYCOLS n'est pas prise en charge pour les vues de dualité de relation JSON (DV JSON) et les tables de collecte JSON (JCT) car elles ont une clé unique prédéfinie (_id).

  1. Clé primaire si elle ne contient aucune colonne VARCHAR2/NVARCHAR2 étendue (32K). Clé primaire sans colonnes invisibles.

  2. Clé unique : clé unique sans colonnes invisibles.

    Dans le cas d'une réplication non intégrée, la sélection de la clé unique est la suivante :

    • Première clé unique alphanumériquement sans colonnes virtuelles, sans UDT, sans colonnes basées sur une fonction, sans colonnes NULL et sans colonnes VARCHAR2/NVARCHAR2 étendues (32K). Pour prendre en charge une clé contenant des colonnes qui font partie d'un index invisible, vous devez utiliser le paramètre ALLOWINVISIBLEINDEXKEYS dans le fichier GLOBALS d'Oracle GoldenGate.

    • Première clé unique alphanumériquement sans colonnes virtuelles, sans UDT, sans colonnes VARCHAR2/NVARCHAR2 étendues (32K) ou sans colonnes basées sur une fonction, mais pouvant inclure des colonnes avec des valeurs NULL. Pour prendre en charge une clé contenant des colonnes qui font partie d'un index invisible, vous devez utiliser le paramètre ALLOWINVISIBLEINDEXKEYS dans le fichier GLOBALS d'Oracle GoldenGate.

  3. Clés uniques non NULL : au moins une colonne de l'une des clés uniques ne doit pas avoir la valeur NULL. En effet, NOALLOWNULLABLEKEYS est la valeur par défaut.

Remarque : ALLOWNULLABLEKEYS n'est pas valide pour le processus Replicat intégré.

  1. 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 autorise à être utilisé dans une clé unique, à l'exclusion des colonnes virtuelles, des tables de contrôle utilisateur, des colonnes basées sur une fonction, des colonnes étendues (32K) VARCHAR2/NVARCHAR2 et des colonnes explicitement exclues de la configuration Oracle GoldenGate par un utilisateur Oracle GoldenGate.

    Sauf exclusion contraire en raison des restrictions précédentes, les colonnes invisibles sont autorisées dans la pseudo-clé.

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 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. Pour plus d'informations, reportez-vous à Référence des paramètres et des fonctions pour Oracle GoldenGate.

Si les critères suivants correspondent à ceux d'Oracle Replicat, vous devez utiliser un index unique correspondant aux colonnes de clé de la table source :