Uso de MAPEXCEPTION
MAPEXCEPTION es válido cuando los nombres de las tablas de origen y destino de la sentencia MAP están con comodines. Coloque la cláusula MAPEXCEPTION en la sentencia MAP normal, la misma en la que asigne las tablas de origen a las tablas de destino. Replicat asigna todas las operaciones que generan errores de todas las tablas con comodines a la misma tabla de excepciones; por lo tanto, la tabla de excepciones debe contener un superjuego de todas las columnas de todas las tablas con comodines.
Puesto que no puede asignar columnas de forma individual en una configuración de comodín, utilice la cláusula COLMAP con la opción USEDEFAULTS para manejar la asignación de columnas para las tablas con comodines (o utilice el parámetro COLMATCH si corresponde) y utilice asignaciones de columnas explícitas para asignar cualquier información adicional, como la capturada con funciones de conversión de columnas o SQLEXEC.
Al utilizar MAPEXCEPTION, incluya el parámetro INSERTALLRECORDS en la cláusula MAPEXCEPTION. INSERTALLRECORDS hace que todos los tipos de operación se apliquen a la tabla de excepciones como operaciones INSERT. Esto es necesario para mantener un registro preciso de las excepciones y para evitar errores de integridad en la tabla de excepciones.
Para obtener más información sobre estos parámetros, consulte Referencia de parámetros y funciones para Oracle GoldenGate.
Ejemplo 9-22 MAPEXCEPTION
Este es un ejemplo de cómo utilizar MAPEXCEPTION para la asignación de excepciones. Las cláusulas MAP y TARGET contienen nombres de tabla de origen y destino con comodines. Las excepciones que se producen al procesar cualquier tabla con un nombre que empiece por TRX se capturan en la tabla fin.trxexceptions mediante la asignación designada.
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')
)
);