Prérequis pour la configuration de DDL

Les instructions CREATE TABLE AS SELECT (CTAS) incluent des instructions SELECT et des instructions INSERT qui référencent un nombre quelconque d'objets sous-jacents. Par défaut, Oracle GoldenGate obtient les données de la clause AS SELECT à partir de la base de données cible. Vous pouvez forcer l'opération CTAS à conserver les insertions d'origine à l'aide de ce paramètre.

Remarque :

Pour cette raison, les tables Oracle XMLType créées à partir d'une instruction CTAS (CREATE TABLE AS SELECT) ne peuvent pas être prises en charge. Pour les tables XMLType, les ID d'objet de ligne doivent correspondre entre la source et la cible, ce qui ne peut pas être maintenu dans ce scénario. Les tables XMLType créées par une instruction CTAS vide (qui n'insère pas de données dans la nouvelle table) peuvent être tenues à jour correctement.

En outre, vous pouvez utiliser le paramètre GETCTASDML qui permet à CTAS de réexécuter les insertions de CTAS, préservant ainsi les OID lors de la réplication. Ce paramètre n'est pris en charge qu'avec le dictionnaire intégré et toute réplication en aval doit avoir la valeur 12.1.2.1 ou une valeur supérieure pour utiliser la trace. Sinon, il peut y avoir des divergences.

Les objets de la clause AS SELECT doivent exister dans la base de données cible et leur nom doit être identique à celui de la source.

Dans une instruction MAP, Oracle GoldenGate met uniquement en correspondance le nom de la nouvelle table (CREATE TABLE name) avec la spécification TARGET, mais ne met pas en correspondance les noms des objets sous-jacents à partir de la clause AS SELECT. Il peut y avoir des dépendances sur les objets qui peuvent entraîner des incohérences de données si les noms ont été convertis en spécification TARGET.

L'exemple suivant illustre une instruction CREATE TABLE AS SELECT sur la source et la manière dont elle serait répliquée sur la cible par Oracle GoldenGate.

CREATE TABLE a.tab1 AS SELECT * FROM a.tab2;

L'instruction MAP pour le processus Replicat est la suivante :

MAP a.tab*, TARGET a.x*;

L'instruction LDD cible appliquée par le processus Replicat est la suivante :

CREATE TABLE a.xtab1 AS SELECT * FROM a.tab2;

Le nom de la table dans la clause AS SELECT * FROM reste identique à celui de la source : tab2 (plutôt que xtab2).

Pour maintenir la cohérence des données dans les objets sous-jacents sur la source et la cible, vous pouvez les configurer pour la réplication de données par Oracle GoldenGate. Dans l'exemple précédent, vous pouvez utiliser les instructions suivantes pour répondre à cette exigence :

Source

TABLE a.tab*;

Cible

MAPEXCLUDE a.tab2
MAP a.tab*, TARGET a.x*;
MAP a.tab2, TARGET a.tab2;

Reportez-vous à Identification correcte des noms d'objet non qualifiés dans DDL.