Preparando Tabelas para Processamento

Os atributos de tabela nas seções a seguir devem ser tratados no ambiente do Oracle GoldenGate.

Consideração do processo Replicat para Colunas, Triggers e Restrições de Identidade de Destino

Ao replicar dados em um banco de dados do SQL Server de destino que tenha colunas de identidade, triggers e restrições em cascata e de verificação, considere o seguinte:

Para superar essas situações, há várias opções que podem ser implementadas com base no caso de uso de replicação.

Melhorando a Replicação IDENTITY com o Processamento de Array

Como somente uma tabela por sessão pode ter IDENTITY_INSERT definido como ON, o Replicat deve alternar continuamente IDENTITY_INSERT quando aplicar dados IDENTITY a várias tabelas em uma sessão. Para melhorar o desempenho do Replicat nessa situação, use o parâmetro BATCHSQL. BATCHSQL faz com que o Replicat use o processamento de array em vez de aplicar instruções SQL uma de cada vez.

Garantindo a Exclusividade da Linha na Tabela de Origem e Destino

O Oracle GoldenGate requer alguma forma de identificador de linha exclusivo nas tabelas de origem e destino para localizar as linhas de destino corretas para atualizações e exclusões replicadas.

A menos que uma cláusula KEYCOLS seja usada na instrução TABLE ou MAP, o Oracle GoldenGate seleciona um identificador de linha a ser usado na seguinte ordem de prioridade:

  1. Chave principal

  2. Primeira chave exclusiva alfanumérica que não contém um timestamp ou uma coluna calculada não materializada.

  3. Se nenhum dos tipos de chave anteriores existir (mesmo que possa haver outros tipos de chaves definidos na tabela), o Oracle GoldenGate construirá uma pseudochave de todas as colunas que o banco de dados permite ser usado em uma chave exclusiva, excluindo as que não são suportadas pelo Oracle GoldenGate em uma chave ou as excluídas da configuração do Oracle GoldenGate. Observação: Se houver outras chaves não utilizáveis em uma tabela ou se não houver nenhuma chave na tabela, o Oracle GoldenGate registrará uma mensagem apropriada no arquivo de relatório. A construção de uma chave de todas as colunas impede o desempenho do Oracle GoldenGate no sistema de origem. No destino, essa chave faz com que o Replicat use uma cláusula WHERE maior e menos eficiente.

  1. Se uma tabela não tiver uma chave apropriada, ou se você preferir que a(s) chave(s) existente(s) não seja(m) usada(s), poderá definir uma chave substituta, se a tabela tiver colunas que sempre contenham valores exclusivos. Você define essa chave substituta incluindo uma cláusula KEYCOLS no parâmetro Extract TABLE e no parâmetro Replicat MAP. A chave especificada substituirá qualquer chave primária ou exclusiva existente que o Oracle GoldenGate localizar. Consulte TABLE | MAP em Reference for Oracle GoldenGate.

Usando KEYCOLS para Especificar uma Chave Personalizada

Se uma tabela não tiver um identificador de linha aplicável, ou se você preferir que os identificadores não sejam usados, poderá definir uma chave substituta, desde que a tabela tenha colunas que sempre contenham valores exclusivos. Você define essa chave substituta incluindo uma cláusula KEYCOLS no parâmetro Extract TABLE e no parâmetro Replicat MAP. A chave especificada substitui qualquer chave primária ou exclusiva existente que o Oracle GoldenGate localize.