Preparando Tabelas para Processamento

Os atributos de tabela a seguir devem ser tratados em um ambiente do Oracle GoldenGate para TimesTen.

Removendo Restrições ON DELETE CASCADE

Se uma tabela de destino no Oracle TimesTen tiver uma chave estrangeira, que especifique a cláusula ON DELETE CASCADE, e se a tabela que é o destino dessa chave estrangeira também for um destino para replicação do Oracle GoldenGate, você deverá remover a cláusula ON DELETE CASCADE da definição de chave estrangeira para evitar erros.

Considere o exemplo a seguir, no qual as tabelas de origem são emp_src e salary_src e as tabelas de destino são emp_targ e salary_targ.

  1. Uma exclusão é emitida para emp_src.

  2. Ela coloca uma exclusão em cascata em salary_src.

  3. O Oracle GoldenGate envia as duas exclusões ao destino.

  4. A exclusão pai chega primeiro e é aplicada ao emp_targ.

  5. A exclusão pai coloca uma exclusão em cascata em salary_targ.

  6. A exclusão em cascata de salary_src é aplicada a salary_targ.

  7. Não é possível localizar a linha porque ela já foi excluída na etapa 5.

O Oracle TimesTen não suporta a desativação de constraints de chave estrangeira ou em constraints cascata de exclusão. Para remover a ON DELETE CASCADE, você deve eliminar a tabela e recriá-la sem a cláusula ON DELETE CASCADE ou pode usar ALTER TABLE para remover a restrição de chave estrangeira e recriá-la sem a cláusula ON DELETE CASCADE.

Garantindo a Exclusividade da Linha para Tabelas

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

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

  2. 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 Referência de Parâmetros e Funções do Oracle GoldenGate.