PERMITIRNOOPUPDATES | NOALLOWNOOPUPDATES
Válido Para
Replicat
Descrição
Use ALLOWNOOPUPDATES e NOALLOWNOOPUPDATES para controlar como o Replicat responde a uma operação no-op. Uma operação no-op é aquela em que não há efeito na tabela de destino. A seguir estão alguns exemplos de como isso pode ocorrer.
-
A tabela de origem tem uma coluna que não existe na tabela de destino ou uma coluna que foi excluída da replicação (com uma cláusula
COLSEXCEPT). Em ambos os casos, se essa coluna de origem for atualizada, não haverá nome de coluna de destino a ser usado na cláusulaSETna instrução SQL Replicat. -
É feita uma atualização que define uma coluna com o mesmo valor que a atual. O banco de dados não registra o novo valor porque ele não foi alterado. No entanto, o Oracle GoldenGate captura a operação como um registro de alteração porque a chave primária foi registrada, mas não há valor de coluna para a cláusula
SETna instrução SQL de Replicat.
Quando NOALLOWNOOPUPDATES é usado, o processo Replicat só será encerrado se as tabelas de origem e destino não tiverem uma chave definida ou se o processo Replicat não usar KEYCOLS. Nesses casos, em que a tabela de destino não tem uma chave exclusiva definida e uma operação de atualização é realizada em qualquer uma das colunas de origem, ocorre um erro semelhante ao seguinte:
Encountered an update for target table TELLER, which has no unique key defined. KEYCOLS can be used to define a key. Use ALLOWNOOPUPDATES to process the update without applying it to the target database. Use APPLYNOOPUPDATES to force the update to be applied using all columns in both the SET and WHERE clause.
Você pode usar o parâmetro APPLYNOOPUPDATES para forçar o UPDATE a ser aplicado. APPLYNOOPUPDATES substitui ALLOWNOOPUPDATES. Se ambos forem especificados, o Replicat aplicará atualizações para as quais há colunas-chave para as tabelas de origem e de destino.
Se ALLOWNOOPUPDATES for especificado quando o parâmetro HANDLECOLLISIONS ou INSERTMISSINGUPDATES estiver sendo usado e se o Oracle GoldenGate tiver todos os valores de chave de destino, o Oracle GoldenGate aplicará uma UPDATE usando todas as colunas da tabela na cláusula SET e na cláusula WHERE (chamando o comportamento APPLYNOOPUPDATES). Isso é necessário para que o Oracle GoldenGate possa determinar se a linha está presente ou ausente. Se estiver ausente, o Oracle GoldenGate converterá o UPDATE em um INSERT.
Padrão
NOALLOWNOOPUPDATES
Sintaxe
ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES