ADD TRANDATA
Utilisez ADD TRANDATA pour permettre à Oracle GoldenGate d'acquérir les informations de transaction dont il a besoin dans les enregistrements de transaction.
Avant d'utiliser cette commande, établissez une connexion de base de Données à l'aide de la commande DBLOGIN.
ADD TRANDATA est valide pour les bases de données répertoriées ici :
-
DB2 for i
-
DB2 LUW
-
DB2 z/OS
-
Oracle
-
PostgreSQL
-
SQL Server
-
Sybase
Pour les autres bases de données prises en charge, cette fonctionnalité existe peut-être déjà ou doit être configurée via l'interface de base de données.
Reportez-vous aux tableaux suivants afin d'en savoir plus sur l'emploi des caractères génériques pour les différentes bases en cas d'utilisation d'ADD TRANDATA :
| Base de données | Utilisation des caractères génériques |
|---|---|
| DB2 LUW, DB2 z/OS | Les caractères génériques peuvent être utilisés avec les noms de table uniquement. Pas avec les noms de schéma. |
| Oracle | Les caractères génériques peuvent être utilisés avec les noms de schéma et de table. Pas avec un nom de base de données pluggable. |
| PostgreSQL et SQL Server | Les caractères génériques peuvent être utilisés avec les noms de schéma et de table. |
DB2 for i
Utilisez ADD TRANDATA pour démarrer la journalisation des données. La commande ADD TRANDATA appelle STRJRNPF. Cette méthode est recommandée pour démarrer la journalisation des tables, car elle garantit que l'attribut d'image de journal requis (Record Images (IMAGES): *BOTH) est défini sur la commande STRJRNPF.
DB2 LUW
Utilisez ADD TRANDATA pour activer DATA CAPTURE CHANGES dans les tables indiquées. Par défaut, ADD TRANDATA émet la commande suivante vers la base de données :
ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;
Vous pouvez exclure la clause LONGVAR en utilisant ADD TRANDATA avec l'option EXCLUDELONG.
DB2 z/OS
Utilisez ADD TRANDATA pour activer DATA CAPTURE CHANGES dans les tables indiquées. Par défaut, ADD TRANDATA émet la commande suivante vers la base de données :
ALTER TABLE name DATA CAPTURE CHANGES;
Oracle Database
Oracle GoldenGate 26ai pour Oracle AI Database 26ai et les version supérieures prennent en charge la réplication pour les vues dualité relationnelle JSON et les tables de collecte JSON. La commande ADD TRANDATA active la journalisation supplémentaire pour les vues de dualité relationnelle JSON et les tables de collecte JSON. Toutefois, ADD TRANDATA n'a aucune incidence sur les tables de base de vue de dualité JSON et n'ajoute pas de données transactionnelles pour les tables de base. Pour plus d'informations, reportez-vous à Prérequis pour la configuration de la réplication pour les tables de collecte JSON DV et JSON dans la documentation sur les microservices Oracle GoldenGate.
Le recours à une commande semblable à celle qui suit s'applique uniquement aux tables, et NON à des vues de dualité relationnelle JSON et à des tables de collection JSON :
ADD TRANDATA HR.*
Pour effectuer une capture à partir des vues de dualité JSON et des tables de collecte JSON, vous devez exécuter la commande ADD TRANDATA pour chaque vue de dualité JSON et table de collecte JSON à répliquer. Cette action garantit que vous êtes informé des vues de dualité JSON et des tables de collection JSON configurées pour la réplication afin d'éviter toute surcharge du système.
Remarque : les caractères génériques ne sont pas pris en charge lors de l'activation de la réplication logique pour les vues de dualité JSON à l'aide de ADD TRANDATA. Toutefois, les tables de collecte JSON prennent en charge les caractères génériques, tout comme les tables standard. Par conséquent, l'instruction TABLE/MAP autorise également l'utilisation de caractères génériques.
A partir de la version 21c, cette commande active également une table pour la capture automatique de la base de données Oracle.
Par défaut, ADD TRANDATA pour Oracle active la journalisation non conditionnée de la clé primaire et la journalisation supplémentaire conditionnelle de toutes les clés uniques et clés étrangères de la table indiquée. Pour plus d'informations sur le traitement de la journalisation supplémentaire pour Oracle GoldenGate pour Oracle AI Database, reportez-vous à Procédure d'unicité des lignes dans les tables source et cible.
Si possible, utilisez la commande ADD SCHEMATRANDATA plutôt que la commande ADD TRANDATA. La commande ADD SCHEMATRANDATA garantit la continuité de réplication si des instructions DML viennent d'être exécutées sur un objet pour lequel elles viennent d'être exécutées. Vous pouvez exclure des objets de la spécification de schéma à l'aide de paramètres d'exclusion.
Pour utiliser la fonctionnalité Oracle GoldenGate de réplication DDL, vous devez employer la commande ADD SCHEMATRANDATA afin de journaliser les données supplémentaires requises.
Lorsque Vous utilisez ADD SCHEMATRANDATA, vous pouvez employer ADD TRANDATA avec l'option COLS pour journaliser les éventuelles colonnes non clé, comme celles requises pour les instructions FILTER et les clauses KEYCOLS dans les paramètres TABLE et MAP.
Remarque : il est possible d'utiliser `ADD
TRANDATA` for Oracle when DDL support is enabled, but only if you can stop DML on all tables before DDL is performed on them or, if that is not possible, you can guarantee that no users or applications will issue DDL that adds new tables whose names satisfy an object specification in a `TABLE` or `MAP` statement. There must be no possibility that users or applications will issue DDL that changes the key definitions of any tables that are already in the Oracle GoldenGate configuration.
{: .infoboxnote}
Oracle recommande de placer la base de données source en mode de journalisation forcée et d'activer la journalisation supplémentaire minimale au niveau de la base de données lors de l'utilisation d'Oracle GoldenGate. Les éventuelles informations de chaînage de lignes existantes sont ainsi ajoutées au fichier de journalisation pour les opérations de mise à jour.
Tenez compte des points suivants lorsque vous utilisez ADD TRANDATA pour une base de données de l'IA :
-
Si des détails de journalisation changent après le démarrage de l'extraction des données par Oracle GoldenGate, vous devez arrêter, puis démarrer le processus d'extraction lisant la table concernée avant toute modification des données.
-
Lors de la création d'un groupe de journalisation supplémentaire avec
ADD TRANDATA, Oracle GoldenGate ajoute l'ID d'objet au préfixeGGS_, par exempleGGS_18342.
PostgreSQL
Avec la commande ADD TRANDATA, le paramètre REPLICA IDENTITY de la table est modifié. Le paramètre REPLICA IDENTITY contrôle l'image "avant" des colonnes d'une table, qui doivent être consignées dans le journal des transactions pour les opérations UPDATE et DELETE.
SQL Server
Utilisez ADD TRANDATA pour fournir les informations sur la journalisation étendue dont Oracle GoldenGate a besoin pour reconstruire les opérations SQL. Le journal de transactions SQL Server ne fournit pas assez d'informations par défaut.
En activant TRANDATA, Oracle GoldenGate active la fonctionnalité d'enregistrement de données de modification SQL Server pour la base de données et crée une table d'enregistrement de données de modification pour chaque instance activée à l'aide de la commande TRANDATA.
Syntaxe
ADD TRANDATA container.owner.table]
[, FILEGROUP filegroup-name]
[, NOSCHEDULINGCOLS | ALLCOLS]
[, ALLOWNONVALIDATEKEYS]
[, PARTIALJSON]
[, PREPARECSN {WAIT | LOCK | NOWAIT | NONE}]
[container.]owner.table
Valide pour DB2 LUW, DB2 z/OS, Oracle, PostgreSQL et SQL Server.
Spécification du nom en deux ou trois parties. Utilisez un nom en deux parties owner.table pour toutes les base de donnée prises en charge, à l'exception d'une base de donnée Conteneur colocative Oracle.
Utilisez un nom en trois parties (container.owner.table) pour une base de données Conteneur colocative Oracle. Vous pouvez utiliser un caractère générique pour n'importe quel composant. Utilisée avec un caractère générique, ADD TRANDATA retire par filtrage les noms qui correspondent aux noms d'objets système. Afin d'utiliser ADD TRANDATA pour des objets qui ne sont pas un objet système mais dont le nom correspond à ceux d'objets système dans un modèle avec caractères génériques, émettez ADD TRANDATA pour ces objets sans utiliser de caractère générique.
Si vous exécutez la commande à partir de cdb$root, assurez-vous également de définir le privilège utilisateur suivant du côté de la base de données :
ALTER USER userID SET CONTAINER_DATA = ALL CONTAINER = CURRENT;
schema.table [JOURNAL library/journal] | library/file [JOURNAL library/journal]
Valide pour DB2 for i.
Indique le schéma SQL et le nom d'une table ou la bibliothèque native et un nom de fichier. Si un journal par défaut est défini avec la commande DEFAULTJOURNAL, vous pouvez omettre l'option JOURNAL ; sinon, elle est requise.
FILEGROUP filegroup-name
Valide pour SQL Server.
(Facultatif) Vous pouvez désigner le groupe d'éléments dans lequel placer les tables intermédiaires SQL Server de capture de données de modification SQL Server, en utilisant l'option FILEGROUP avec un nom d'élément de groupe existant.
ADD TRANDATA owner.table FILEGROUP cdctables
Vous pouvez également utiliser l'option FILEGROUP du fichier GLOBALS si vous devez employer le même FILEGROUP pour chaque table lors de l'activer de TRANDATA.
L'exemple suivant montre la définition de FILEGROUP myFileGroup dans le fichier GLOBALS :
FILEGROUP myFileGroup
Sortie :
Logging of supplemental log data is enabled for table dbo.test1 in filegroup
myFileGroup
Dans ce cas, la commande ADD TRANDATA utilise myFileGroup pour toutes les tables.
Si vous utilisez également le paramètre FILEGROUP avec ADD TRANDATA, la commande remplace le nom du groupe de fichier défini dans le fichier GLOBALS.
Par exemple, si vous définissez FILEGROUP myFileGroup dans le fichier GLOBALS, puis exécutez la commande ADD TRANDATA suivante :
ADD TRANDATA dbo.* FILEGROUP yourFileGroup
vous obtenez la sortie suivante :
Logging of supplemental log data is enabled for table dbo.test1 in filegroup
yourFileGroup
Dans ce cas, ADD TRANDATA utilise yourFileGroup au lieu de myFileGroup pour toutes les tables.
Si vous n'indiquez le groupe de fichiers FILEGROUP ni dans GLOBALS ni avec ADD TRANDATA, la ligne de commande prend en charge le groupe de fichiers FILEGROUP (par défaut) de la base des données lors de l'ajout des données TRANDATA (de la table). Par exemple, si vous exécutez ADD TRANDATA dbo.*, la sortie est la suivante :
Logging of supplemental log data is enabled for table dbo.test1 in filegroup
PRIMARY
Dans ce cas, le groupe de fichiers FILEGROUP par défaut est Primary. Si vous exécutez la commande INFO TRANDATA, le nom FILEGROUP indique PRIMARY.
NOSCHEDULINGCOLS | ALLCOLS
Valide pour Oracle et PostgreSQL.
A partir de Oracle GoldenGate 21c, NOSCHEDULINGCOLS est en phase d'arrêt pour la base de données d'Oracle version 21c ou supérieure si la base de données en cours d'exécution prend en charge les fonctionnalités de capture automatique.
Ces options répondent aux exigences de journalisation d'une réplication intégrée traitant les tables indiquées avec ADD TRANDATA.
NOSCHEDULINGCOLS
Valide pour Oracle uniquement.
Désactive la journalisation des colonnes de programmation. Par défaut, ADD TRANDATA active la journalisation non conditionelle de la clé primaire et la journalisation supplémentaire conditionnelle de toutes les clés uniques et clés étrangères de la table indiquée. La journalisation non conditionnelle force les valeurs de clé primaire vers le journal, que la clé ait été modifiée ou non lors de l'opération en cours. La journalisation conditionnelle journalise toutes les valeurs de colonne d'une clé étrangère ou unique si au moins l'une d'elles a été modifiée lors de l'opération en cours. La clé primaire, les clés uniques et les clés étrangères doivent être disponibles pour le serveur entrant en vue du calcul des dépendances.
ALLCOLS
Active la journalisation supplémentaire non conditionnelle de toutes les colonnes de clé et non clé de la table. Cette option active la journalisation des clés requises pour calculer les dépendances, ainsi que celle de toutes les autres colonnes servant au filtrage, à la résolution de conflit, etc.
Pour PostgreSQL, ALLCOLS définit REPLICA IDENTITY sur FULL pour la table. ALLCOLS est spécifié dans la commande ADD TRANDATA, afin d'activer la journalisation de toutes les colonnes pour l'opération UPDATE et DELETE, même si ces colonnes n'ont pas été modifiées.
Pour les tables sans clé primaire ni index unique, l'option ALLCOLS est redondante. La syntaxe est la suivante :
ADD TRANDATA table_name ALLCOLS
COLS (columns)
Valide pour Oracle.
Utilisez l'option COLS pour journaliser des colonnes non clé spécifiques. Elle peut être utilisée pour journaliser des colonnes indiquées dans une clause KEYCOLS et celles nécessaires à des fins de filtrage et de manipulation, ce qui peut être plus efficace que l'extraction de ces valeurs avec une clause FETCHCOLS dans une instruction TABLE. Séparez les diverses colonnes avec des virgules, par exemple NAME, ID, DOB.
INCLUDELONG | EXCLUDELONG
Valide pour DB2 LUW.
Détermine si la commande ALTER TABLE émise par ADD TRANDATA inclut l'attribut INCLUDE LONGVAR COLUMNS. INCLUDELONG est la valeur par défaut. Lorsque la commande ADD TRANDATA est émise avec cette option, Oracle GoldenGate émet l'instruction suivante :
ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;
Si EXCLUDELONG est utilisé, la commande est semblable à la suivante :
ALTER TABLE name DATA CAPTURE CHANGES;
Quand EXCLUDELONG est utilisé, Oracle GoldenGate ne prend pas en charge la fonctionnalité qui requiert des images "avant" des tables incluant les colonnes LONGVAR. Par exemple, le paramètre GETUPDATEBEFORES. La prise en charge de cette fonctionnalité suppose que les modifications apportées aux colonnes LONGVAR dans les journaux de transactions incluent les images "avant" et "après" de la valeur.
NOKEY
Valide pour DB2 for i, DB2 LUW, DB2 z/OS, Oracle.
A partir de Oracle GoldenGate 21c, NOKEY est en phase d'arrêt pour Oracle Database 21c ou supérieure si la base de donnée en cours d'exécution prend en charge les fonctionnalités de capture automatique.
Supprime la journalisation supplémentaire des colonnes de clé primaire. Si vous utilisez NOKEY, servez- vous de l'option COLS pour journaliser d'autres colonnes pouvant servir d'clés et désignez ces colonnes en tant que clés d'échange à l'aide de l'option KEYCOLS du paramètre TABLE ou MAP.
NOVALIDATE
Valide pour DB2 for i, DB2 LUW, DB2 z/OS, Oracle.
Supprime les informations supplémentaires concernant la table en cours de traitement par ADD TRANDATA. Par défaut, cette option est activée. Le traitement des informations supplémentaires génère un délai de réponse de la commande. Cette option peut donc être utilisée pour augmenter le temps de réponse.
ALLOWNONVALIDATEDKEYS
Valide pour DB2 for i, DB2 LUW, DB2 z/OS, Oracle.
Elle inclut les clés primaires NON VALIDATED et NOT VALID dans la journalisation supplémentaire. Ces clés remplacent les critères de sélection de clé habituels employés par Oracle GoldenGate. Si le paramètre GLOBALS ALLOWNONVALIDATEDKEYS est utilisé, ADD SCHEMATRANDATA est exécuté avec ALLOWNONVALIDATEDKEYS, qu'il soit spécifié ou non. Par défaut, ces clés primaires NON VALIDATED et NOT VALID ne sont pas journalisées.
PARTIALJSON
Valide pour Oracle.
Extrait les mises à jour JSON partielles au niveau de la table. En cas d'activation, l'enregistrement redo inclura les enregistrements JSON partiels.
Voir également le paramètre TRANLOGOPTIONS FETCHPARTIALJSON.
PREPARECSN {WAIT | LOCK | NOWAIT | NONE}
Valide pour Oracle (DML et DDL). Prépare automatiquement les tables au niveau de la source afin que le fichier dump d'export Oracle Data Pump inclue les numéros CSN d'instanciation. La réplication utilise le CSN d'instanciation par table défini par Oracle Data Pump (lors de l'import) pour retirer par filtrage les enregistrements de trace. Sur la cible, l'import Data Pompe remplit la table et la vue système avec des noms SCN d'instanciation à l'aide du paramètre DBOPTIONS ENABLE_INSTANTIATION_FILTERING afin d'activer le filtrage d'instanciation de niveau table.
WAIT
Attend les transactions en attente de traitement et prépare l'instanciation de table.
LOCK
Verrouille la table (pour préparer l'instanciation de table).
NOWAIT
Comportement par défaut. La préparation à l'instanciation est effectuée immédiatement.
NONE
Aucune préparation à l'instanciation n'est effectuée.
Exemples
L'exemple suivant a l'une des conséquences suivantes : journalisation de la clé primaire pour une table Oracle ou journalisation de données supplémentaires pour une table SQL Server ou DB2. Il active aussi la table pour la capture automatique.
ADD TRANDATA hr.employees
L'exemple suivant active la journalisation supplémentaire non conditionnelle de toutes les colonnes d'une clé et non-clé de la table nommée acct. Il active aussi la table pour la capture automatique.
ADD TRANDATA hr.employees ALLCOLS
Dans l'exemple Oracle AI Database suivant, la clé primaire est journalisée, ainsi que le nom et l'adresse des colonnes non-clé. Il active aussi la table pour la capture automatique.
ADD TRANDATA hr.employees, COLS (name, address)
L'exemple Oracle AI Database suivant empêche la clé primaire d'être journalisée, mais consigne les colonnes non-clé name et pid à la place. Il active aussi la table pour la capture automatique.
ADD TRANDATA hr.employees, NOKEY, COLS (name, pid)
L'exemple suivant ajoute la journalisation mais ne prépare pas la table en vue de l'instanciation. Il active aussi la table pour la capture automatique.
ADD TRANDATA hr.employees PREPARECSN NONE
L'exemple suivant supprime le traitement des informations de table supplémentaires. Il active aussi la table pour la capture automatique.
ADD TRANDATA hr.employees.*name NOVALIDATE