Using MAPEXCEPTION
MAPEXCEPTION
is valid when the names of the source and target tables in the MAP
statement are wildcarded. Place the MAPEXCEPTION
clause in the regular MAP
statement, the same one where you map the source tables to the target tables. Replicat maps all operations that generate errors from all of the wildcarded tables to the same exceptions table; therefore, the exceptions table should contain a superset of all of the columns in all of the wildcarded tables.
Because you cannot individually map columns in a wildcard configuration, use the COLMAP
clause with the USEDEFAULTS
option to handle the column mapping for the wildcarded tables (or use the COLMATCH
parameter if appropriate), and use explicit column mappings to map any additional information, such as that captured with column-conversion functions or SQLEXEC
.
When using MAPEXCEPTION
, include the INSERTALLRECORDS
parameter in the MAPEXCEPTION
clause. INSERTALLRECORDS
causes all operation types to be applied to the exceptions table as INSERT
operations. This is required to keep an accurate record of the exceptions and to prevent integrity errors on the exceptions table.
For more information about these parameters, see Parameters and Functions Reference for Oracle GoldenGate.
Example 8-22 MAPEXCEPTION
This is an example of how to use MAPEXCEPTION
for exceptions mapping. The MAP
and TARGET
clauses contain wildcarded source and target table names. Exceptions that occur when processing any table with a name beginning with TRX
are captured to the fin.trxexceptions
table using the designated mapping.
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') ) );