TOUTES LES DATES | TOUTES LES DATES
Durée de validité
Réplication
Description
Utilisez ALLOWNOOPUPDATES et NOALLOWNOOPUPDATES pour contrôler comment le processus de réplication répond à une opération no-op. Une opération no-op n'a aucun effet sur la table cible. Voici quelques exemples de la façon dont cela peut se produire.
-
La table source a une colonne qui n'existe pas dans la table cible ou une colonne qui a été exclue de la réplication (avec une clause
COLSEXCEPT). Dans les deux cas, si cette colonne source est mise à jour, il n'y aura pas de nom de colonne cible à utiliser dans la clauseSETdans l'instruction SQL de réplication. -
Une mise à jour est effectuée pour définir une colonne sur la même valeur que celle en cours. La base de données ne consigne pas la nouvelle valeur car elle n'a pas été modifiée. Cependant, Oracle GoldenGate capture l'opération en tant qu'enregistrement de modification car la clé primaire a été consignée, mais il n'existe aucune valeur de colonne pour la clause
SETdans l'instruction SQL de réplication.
Lorsque NOALLOWNOOPUPDATES est utilisé, le processus de réplication ne s'interrompt que si aucune clé n'est définie pour les tables source et cible, ou si le processus de réplication n'utilise pas KEYCOLS. Dans de tels cas, dans lequel la table cible nʼa pas de clé unique définie et une opération de mise à jour est effectuée sur lʼune quelconque des colonnes source, une erreur similaire à la suivante se produit :
Encountered an update for target table TELLER, which has no unique key defined. KEYCOLS can be used to define a key. Use ALLOWNOOPUPDATES to process the update without applying it to the target database. Use APPLYNOOPUPDATES to force the update to be applied using all columns in both the SET and WHERE clause.
Vous pouvez utiliser le paramètre APPLYNOOPUPDATES pour forcer l'application de UPDATE. APPLYNOOPUPDATES remplace ALLOWNOOPUPDATES. Si les deux sont indiqués, le processus Replicat applique les mises à jour pour lesquelles il existe des colonnes de clé pour les tables source et cible.
Si ALLOWNOOPUPDATES est indiqué lors de l'utilisation du paramètre HANDLECOLLISIONS ou INSERTMISSINGUPDATES, et si Oracle GoldenGate possède toutes les valeurs de clé cible, Oracle GoldenGate applique une valeur UPDATE en utilisant toutes les colonnes de la table dans la clause SET et la clause WHERE (appel du comportement APPLYNOOPUPDATES). Cette opération est nécessaire pour qu'Oracle GoldenGate puisse déterminer si la ligne est présente ou manquante. Si elle est manquante, Oracle GoldenGate convertit le fichier UPDATE en fichier INSERT.
Valeur par défaut
NOALLOWNOOPUPDATES
Syntaxe
ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES