Fluxo de trabalho de replicação transacional para publicadores Oracle

A replicação transacional dos Editores Oracle é criada na arquitetura de publicação de replicação transacional do Microsoft SQL Server, mas o processo de rastreamento de alterações no Publicador e distribuição das mesmas ao Distribuidor é significativamente diferente da replicação transacional padrão. Apesar das diferenças, as transações que ocorrem no banco de dados de Oracle são aplicadas ao Assinante em grupos transacionais consistentes. As tabelas com referências de chaves estrangeiras entre si, mantêm suas relações de dados à medida que as alterações são distribuídas (as chaves estrangeiras não são copiadas para o Assinante).

ObservaçãoObservação

Os LOBs (objetos grandes) são rastreados de forma diferente de outros tipos de dados. Para obter mais informações, consulte a seção "Considerações sobre objetos grandes" no tópico Considerações de design e limitações para Editores Oracle.

O fluxo de trabalho a seguir destaca as etapas fundamentais envolvidas no rastreamento e distribuição de alterações do Publicador Oracle.

Rastreamento de alterações

  1. Um usuário ou aplicativo executa inserções, atualizações ou exclui, em uma ou mais tabelas, Oracle publicadas para replicação.

  2. Um gatilho no nível de linha instalado por replicação em cada tabela publicada Oracle, é acionado para cada linha modificada, armazenando informações sobre a alteração na tabela de log do artigo associado à tabela.

  3. Quando o gatilho no nível de linha é acionado, um número é recuperado da seqüência HREPL_seq e atribuído à linha da tabela de log que descreve a operação DML. Isto assegura que a replicação aplicará os comandos de alteração na ordem correta no Assinante.

  4. Se ocorrer uma atualização de chave primária, um gatilho no nível da instrução instalado na tabela também será acionado, permitindo que diversas atualizações de chave primária ocorram na mesma instrução para ficarem associadas entre si. O identificador da instrução é retirado da seqüência HREPL_Stmt. Isto é usado para a própria manipulação de atualizações de chave primária no Assinante.

  5. Para cada linha inserida ou excluída da tabela Oracle que é publicada, uma linha será inserida na tabela de log do artigo associada a ela. Para cada linha atualizada na tabela Oracle, uma linha (a imagem posterior) ou duas linhas (a imagem anterior e a imagem posterior) são inseridas na tabela de log, dependendo da replicação exigir as informações sobre o estado anterior da linha.

Distribuindo as alterações ao Distribuidor

  1. O Log Reader Agent identifica o conjunto de alterações transacionalmente consistentes dos logs do artigo que ainda não foram associados a um intervalo de sondagem e armazena temporariamente os IDs de linhas das entradas de tabela de log na tabela HREPL_Poll. O identificador retirado da seqüência HREPL_Pollid é usado para marcar cada entrada de alteração como membro do conjunto transacionalmente consistente, como também para fornecer uma ordem de processamento para o conjunto relativo a outros conjuntos.

  2. Ao processar as alterações para uma tabela publicada, as linhas são recuperadas da tabela de log; o ID de sondagem atual do HREPL_Pollid é usado para identificar essas linhas para processar.

  3. O lote de alterações da tabela de log é confirmado como uma única transação no banco de dados de distribuição e armazenado nas tabelas MSrepl_commands e MSrepl_transactions.

As alterações são lidas, em seguida, no banco de dados de distribuição e entregues aos Assinantes pelo Agente de Distribuição, quando estiverem com a replicação transacional padrão.