Garantindo a Exclusividade da Linha na Tabela de Origem e Destino

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, dependendo do número e do tipo de restrições que foram registradas (consulte Requisitos e Definições do Log de Transação).

Observação: A cláusula KEYCOLS não é suportada para Views de Dualidade de Relação JSON (JSON DVs) e Tabelas de Coleta JSON (JCTs) porque elas têm uma única chave predefinida (_id).

  1. Chave primária se não contiver nenhuma coluna VARCHAR2/NVARCHAR2 estendida (32K). Chave primária sem colunas invisíveis.

  2. Chave exclusiva: chave exclusiva sem colunas invisíveis.

    No caso de um Replicat não integrado, a seleção da chave exclusiva é a seguinte:

    • Primeira chave exclusiva alfanumérica sem colunas virtuais, sem UDTs, sem colunas baseadas em função, sem colunas anuláveis e sem colunas VARCHAR2/NVARCHAR2 estendidas (32K). Para suportar uma chave que contenha colunas que fazem parte de um índice invisível, use o parâmetro ALLOWINVISIBLEINDEXKEYS no arquivo GLOBALS do Oracle GoldenGate.

    • Primeira chave exclusiva alfanumérica sem colunas virtuais, sem UDTs, sem colunas VARCHAR2/NVARCHAR2 estendidas (32K) ou sem colunas baseadas em funções, mas pode incluir colunas anuláveis. Para suportar uma chave que contenha colunas que fazem parte de um índice invisível, use o parâmetro ALLOWINVISIBLEINDEXKEYS no arquivo GLOBALS do Oracle GoldenGate.

  3. Chaves Exclusivas Não Anuláveis: pelo menos uma coluna de uma das chaves exclusivas deve não ser anulável. Isso ocorre porque NOALLOWNULLABLEKEYS é o padrão.

Observação: ALLOWNULLABLEKEYS não é válido para Replicat integrado.

  1. Se nenhum dos tipos de chave anteriores existir (mesmo que possa haver outros tipos de chave definidos na tabela), o Oracle GoldenGate construirá uma pseudochave de todas as colunas que o banco de dados permitir ser usado em uma chave exclusiva, excluindo colunas virtuais, UDTs, colunas baseadas em função, colunas VARCHAR2/NVARCHAR2 estendidas (32K) e quaisquer colunas que sejam explicitamente excluídas da configuração do Oracle GoldenGate por um usuário do Oracle GoldenGate.

    A menos que seja excluído em contrário devido às restrições anteriores, colunas invisíveis são permitidas na pseudochave.

Observação: Se houver outras chaves não utilizáveis em uma tabela ou se não houver chaves 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.

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. Para obter mais informações, consulte Referência de Parâmetros e Funções do Oracle GoldenGate.

Caso os seguintes critérios correspondam ao Oracle Replicat, você precisará usar um índice exclusivo que corresponda às colunas-chave da tabela de origem: