Sobre Replicat Coordenado
No modo coordenado, o Replicat opera da seguinte forma:
-
Lê a trilha do Oracle GoldenGate.
-
Executa filtragem, mapeamento e conversão de dados.
-
Executa filtragem, mapeamento e conversão de dados.
-
Aplica o SQL ao alvo por meio da interface SQL suportada para o banco de dados de destino fornecido, como ODBC ou a interface do banco de dados nativo.
A diferença entre o modo clássico e o modo coordenado é que o Replicat é multithreaded no modo coordenado. Em uma única instância do Replicat, vários threads leem a trilha de forma independente e aplicam transações em paralelo. Cada thread controla a filtragem, o mapeamento, a conversão, a construção de SQL e o tratamento de erros para sua carga de trabalho atribuída. Um thread coordenador coordena as transações entre threads para considerar as dependências entre os threads.
As transações de origem podem ser divididas entre os processos CR, de forma que a integridade da transação de origem total não seja mantida. A parte da transação processada por um processo de CR é feita em ordem confirmada, mas toda a transação em todos os processos de CR não.
O Replicat Coordenado permite o particionamento definido pelo usuário da carga de trabalho para aplicar transações de alto volume simultaneamente. Além disso, coordena automaticamente a execução de transações que exigem coordenação, como DDL, e atualizações de chave primária com o particionamento THREADRANGE. Essa transação é executada como uma transação no destino com sincronização total: ela aguarda até que todas as transações anteriores sejam aplicadas primeiro e todas as transações após essa transação de barreira tenham que esperar até que essa transação de barreira seja aplicada.
É necessário apenas um arquivo de parâmetros para um Replicat coordenado, independentemente do número de threads. Use a opção THREAD ou THREADRANGE na instrução MAP para especificar quais threads processam as transações desses objetos e especifique o número máximo de threads ao criar o grupo Replicat.
Esta figura ilustra a arquitetura do Replicat Coordenado.

Como é mostrado nesta figura, o Replicat Coordenado inclui os dois processos a seguir:
Sobre Transações de Barreira
As transações de barreira são gerenciadas automaticamente em uma configuração Replicat coordenada. Transações de barreira são transações que exigem coordenação entre threads. Os exemplos incluem instruções DDL, transações que incluem atualizações de chaves primárias e determinadas ações EVENTACTIONS.
Opcionalmente, você pode forçar outras transações a serem tratadas como uma transação de barreira por meio do uso de ` COORDINATED keyword in a MAP statement. One use case for this would be force a SQLEXEC` para serem executadas de maneira semelhante a uma execução serial. Isso pode ser benéfico se os resultados puderem se tornar ambíguos, a menos que o estado do alvo seja consistente em todas as transações.
Observação: O Replicat Coordenado não faz cálculos de dependência para transações que não sejam de barreira quando uma tabela mapeada é particionada com base em THREADRANGE. Ele depende de colunas THREADRANGE especificadas para calcular um valor de hash. Ele particiona os dados de entrada com base no valor de hash e envia todos os registros que correspondem a esse valor de hash para o mesmo thread.
Como as Transações de Barreira são Processadas
Todos os threads convergem e aguardam no início de uma transação de barreira. A transação de barreira é suspensa até que os outros threads atinjam sua posição inicial. Se algum thread já estiver processando parte da transação de barreira, esses threads executarão um rollback. Transações agrupadas, como aquelas controladas pelos parâmetros BATCHSQL ou ` GROUPTRANSOPS`, também são revertidas e depois reaplicadas até que cheguem ao início da transação de barreira.
Todos os threads convergem e aguardam no início da próxima transação após a transação de barreira também. Os dois pontos de sincronização, antes e depois da transação de barreira, garantem que todas as operações de metadados e ações EVENTACTIONS ocorram na ordem adequada relevante para as operações de dados.
Quando os threads são sincronizados no início da transação de barreira, a transação de barreira é processada em série pelo thread que tem o ID de thread mais baixo entre todos os threads especificados nas instruções MAP e, em seguida, o processamento paralelo entre os threads é retomado. Você pode forçar transações de barreira a serem processadas por meio de um thread específico, que é sempre o thread 0, especificando o parâmetro USEDEDICATEDCOORDINATIONTHREAD no arquivo de parâmetros Replicat.