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).
-
Chave primária se não contiver nenhuma coluna
VARCHAR2/NVARCHAR2estendida (32K). Chave primária sem colunas invisíveis. -
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/NVARCHAR2estendidas (32K). Para suportar uma chave que contenha colunas que fazem parte de um índice invisível, use o parâmetroALLOWINVISIBLEINDEXKEYSno arquivoGLOBALSdo Oracle GoldenGate. -
Primeira chave exclusiva alfanumérica sem colunas virtuais, sem UDTs, sem colunas
VARCHAR2/NVARCHAR2estendidas (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âmetroALLOWINVISIBLEINDEXKEYSno arquivoGLOBALSdo Oracle GoldenGate.
-
-
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.
-
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/NVARCHAR2estendidas (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:
-
O parâmetro
KEYCOLSnão foi especificado. -
O parâmetro
USEALLKEYCOLUMNSnão foi especificado. -
O parâmetro
ALLOWNULLABLEKEYSnão foi especificado. -
As colunas de chave de origem e de destino não correspondem.
-
Existe uma correspondência de índice exclusiva com a coluna de chave da tabela de origem.