Replicação entre servidores

Como excluir registros duplicados do replicador?

RTREPLICATOR.FAQ-8335
Existe uma situação onde um bloco de mensagens enviadas por um slave são recebidas pelo seu master mas cuja resposta "OK" não chega para o slave, fazendo com que ele reenvie. Casos assim geram duplicidade de registros no respectivo master.

Quando isso ocorre, surgem mensagens de erro do tipo:
ERROR: duplicate key value violates unique constraint ...

Nestes casos, para corrigir estes erros, deve-se executar o DML abaixo:
delete from dml_logs e
where queue = 'E'
and exists 
(
   select 1 
   from dml_logs o
   where o.origin_record_id = e.origin_record_id
   and o.queue = 'F'
   and o.dml = e.dml
);

Evitar a duplicidade

A partir de versão 18.47 existe um tratamento que evita a duplicidade de registro no recebimento dos mesmos. Este tratamento pode ser definido pela preferência RTREPLICATOR.UTL_PUT.REMOVER_DUPLICADOS e por padrão está ativo.

Automação da rotina de exclusão dos registros duplicados:

Este procedimento pode ser incluído em uma operação customizada (Operações customizadas) para ser executado diariamente por JOB (Agendamento de tarefas):
Operação: RTREPLICATOR.EXCLUIR_DUPLICADOS
Título: Excluir registros duplicados do replicador
Tipo de implementacao: Telescope SQL Script Engine
Implementação: (DML acima)

Ver também: