Utiliser MAPEXCEPTION

MAPEXCEPTION est valide lorsque les noms des tables source et cible dans l'instruction MAP sont des caractères génériques. Placez la clause MAPEXCEPTION dans l'instruction MAP standard, la même où vous mettez en correspondance les tables source avec les tables cible. Le processus Replicat met en correspondance toutes les opérations qui génèrent des erreurs à partir de toutes les tables avec caractères génériques avec la même table d'exceptions. Par conséquent, la table d'exceptions doit contenir un surensemble de toutes les colonnes de toutes les tables avec caractères génériques.

Etant donné que vous ne pouvez pas mettre en correspondance individuellement des colonnes dans une configuration à caractères génériques, utilisez la clause COLMAP avec l'option USEDEFAULTS pour gérer la mise en correspondance de colonnes pour les tables à caractères génériques (ou utilisez le paramètre COLMATCH, le cas échéant) et utilisez des mises en correspondance de colonnes explicites pour mettre en correspondance des informations supplémentaires, telles que celles capturées avec des fonctions de conversion de colonne ou SQLEXEC.

Lorsque vous utilisez MAPEXCEPTION, incluez le paramètre INSERTALLRECORDS dans la clause MAPEXCEPTION. INSERTALLRECORDS entraîne l'application de tous les types d'opération à la table des exceptions en tant qu'opérations INSERT. Cela est nécessaire pour conserver un enregistrement précis des exceptions et pour éviter les erreurs d'intégrité dans la table des exceptions.

Pour plus d'informations sur ces paramètres, reportez-vous à Référence des paramètres et des fonctions pour Oracle GoldenGate.

Exemple 9-22 MAPEXCEPTION

Voici un exemple d'utilisation de MAPEXCEPTION pour le mapping d'exceptions. Les clauses MAP et TARGET contiennent des noms de table source et cible avec caractères génériques. Les exceptions qui se produisent lors du traitement d'une table dont le nom commence par TRX sont capturées dans la table fin.trxexceptions à l'aide du mapping désigné.

MAP src.trx*, TARGET trg.*,
MAPEXCEPTION (TARGET fin.trxexceptions,
INSERTALLRECORDS,
COLMAP (USEDEFAULTS,
ACCT_NO = ACCT_NO,
OPTYPE = @GETENV ('LASTERR', 'OPTYPE'),
DBERR = @GETENV ('LASTERR', 'DBERRNUM'),
DBERRMSG = @GETENV ('LASTERR', 'DBERRMSG')
)
);