Usando MAPEXCEPTION

MAPEXCEPTION é válido quando os nomes das tabelas de origem e de destino na instrução MAP são curingas. Coloque a cláusula MAPEXCEPTION na instrução MAP regular, a mesma em que você mapeia as tabelas de origem para as tabelas de destino. O Replicat mapeia todas as operações que geram erros de todas as tabelas com curinga para a mesma tabela de exceções; portanto, a tabela de exceções deve conter um superconjunto de todas as colunas em todas as tabelas com curinga.

Como você não pode mapear colunas individualmente em uma configuração de curinga, use a cláusula COLMAP com a opção USEDEFAULTS para tratar o mapeamento de coluna para as tabelas com curinga (ou use o parâmetro COLMATCH, se apropriado) e use mapeamentos de coluna explícitos para mapear informações adicionais, como as capturadas com funções de conversão de coluna ou SQLEXEC.

Ao usar MAPEXCEPTION, inclua o parâmetro INSERTALLRECORDS na cláusula MAPEXCEPTION. INSERTALLRECORDS faz com que todos os tipos de operação sejam aplicados à tabela de exceções como operações INSERT. Isso é necessário para manter um registro preciso das exceções e evitar erros de integridade na tabela de exceções.

Para obter mais informações sobre esses parâmetros, consulte Referência de Parâmetros e Funções do Oracle GoldenGate.

Exemplo 9-22 MAPEXCEPTION

Este é um exemplo de como usar o MAPEXCEPTION para mapeamento de exceções. As cláusulas MAP e TARGET contêm nomes de tabela de origem e destino com curinga. As exceções que ocorrem ao processar qualquer tabela com um nome que começa com TRX são capturadas na tabela fin.trxexceptions usando o mapeamento designado.

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')
)
);