AGGIORNAMENTI | NOALLOWNOOPUPDATES
Valido per
Replicat
Descrizione
Utilizzare ALLOWNOOPUPDATES e NOALLOWNOOPUPDATES per stabilire in quale modo Replicat risponde a un'operazione no-op. Un'operazione non operativa è quella in cui non vi è alcun effetto sulla tabella di destinazione. Di seguito sono riportati alcuni esempi di come ciò possa verificarsi.
-
La tabella di origine contiene una colonna che non esiste nella tabella di destinazione oppure una colonna esclusa dalla replica (con una clausola
COLSEXCEPT). In entrambi i casi, se la colonna di origine viene aggiornata, non ci sarà alcun nome di colonna di destinazione da utilizzare nella clausolaSETall'interno dell'istruzione Replicat SQL. -
Viene effettuato un aggiornamento che imposta una colonna sullo stesso valore di quella corrente. Il database non registra il nuovo valore perché non è stato modificato. Tuttavia, Oracle GoldenGate acquisisce l'operazione come record di modifica perché la chiave primaria è stata registrata, ma non vi è alcun valore di colonna per la clausola
SETnell'istruzione Replicat SQL.
Quando si utilizza NOALLOWNOOPUPDATES, Replicat viene interrotto solo se per le tabelle di origine e di destinazione non è stata definita una chiave o se Replicat non utilizza KEYCOLS. In questi casi, in cui nella tabella di destinazione non è definita alcuna chiave univoca e viene eseguita un'operazione di aggiornamento su una qualsiasi delle colonne di origine, si verifica un errore simile al seguente:
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.
È possibile utilizzare il parametro APPLYNOOPUPDATES per forzare l'applicazione del parametro UPDATE. APPLYNOOPUPDATES sostituisce ALLOWNOOPUPDATES. Se vengono specificati entrambi, Replicat applica gli aggiornamenti per i quali sono presenti colonne chiave per le tabelle di origine e di destinazione.
Se si specifica ALLOWNOOPUPDATES quando si utilizza il parametro HANDLECOLLISIONS o INSERTMISSINGUPDATES e se Oracle GoldenGate dispone di tutti i valori della chiave di destinazione, Oracle GoldenGate applica un valore UPDATE utilizzando tutte le colonne della tabella nella clausola SET e nella clausola WHERE (chiamando il comportamento di APPLYNOOPUPDATES). Ciò è necessario in modo che Oracle GoldenGate possa determinare se la riga è presente o mancante. Se manca, Oracle GoldenGate converte il file UPDATE in INSERT.
Predefinito
NOALLOWNOOPUPDATES
Sintassi
ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES