ADD TRANDATA

Utilizzare ADD TRANDATA per consentire a Oracle GoldenGate di acquisire le necessarie informazioni sulla transazione dai record delle transazioni.

Prima di utilizzare questo comando, utilizzare il comando DBLOGIN per stabilire una connessione a database.

ADD TRANDATA è valido per i database elencati qui:

Per gli altri database supportati è possibile che questa funzionalità esista già o debba essere configurata mediante l'interfaccia del database.

Per informazioni sull'uso dei caratteri jolly per database diversi quando si utilizza ADD TRANDATA, vedere le tabelle riportate di seguito:

Database Uso dei caratteri jolly
Db2 LUW e Db2 z/OS I caratteri jolly possono essere utilizzati solo con i nomi di tabella e non con i nomi di schema.
Oracle I caratteri jolly possono essere utilizzati con i nomi di tabella e di schema e non con il nome del PDB.
PostgreSQL e SQL Server I caratteri jolly possono essere utilizzati con i nomi di tabella e di schema.

Db2 per i

Utilizzare ADD TRANDATA per avviare il journaling dei dati. Il comando ADD TRANDATA richiama STRJRNPF ed è il metodo consigliato per avviare la scrittura contabile delle tabelle, perché garantisce che l'attributo di immagine diario richiesto Record Images (IMAGES): *BOTH sia impostato sul comando STRJRNPF.

Db2 LUW

Utilizzare ADD TRANDATA per abilitare DATA CAPTURE CHANGES nelle tabelle specificate. Per impostazione predefinita ADD TRANDATA esegue il comando seguente nel database:

ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;

È possibile escludere la clausola LONGVAR utilizzando ADD TRANDATA con l'opzione EXCLUDELONG.

Db2 z/OS

Utilizzare ADD TRANDATA per abilitare DATA CAPTURE CHANGES nelle tabelle specificate. Per impostazione predefinita ADD TRANDATA esegue il comando seguente nel database:

ALTER TABLE name DATA CAPTURE CHANGES;

Oracle Database

Oracle GoldenGate 26ai per Oracle AI Database 26ai e le versioni successive supportano la replica per le viste dualità relazionali JSON e le tabelle delle raccolte JSON. Il comando ADD TRANDATA abilita il log supplementare per le viste Duality relazionali JSON e le tabelle di raccolta JSON. Tuttavia, ADD TRANDATA non influisce sulla tabella di base della vista dualità JSON e non aggiunge dati transazionali per le tabelle base. Per i dettagli, vedere Prerequisiti per l'impostazione della replica per le tabelle di raccolta JSON DV e JSON nella Documentazione dei microservizi Oracle GoldenGate.

Tenere presente che l'utilizzo del comando come indicato di seguito è valido solo per le tabelle e NON è valido per le viste dualità relazionale e per le tabelle di raccolte JSON:

ADD TRANDATA HR.*

Per acquisire dalle viste dualità JSON e nelle tabelle di raccolta JSON, è necessario eseguire il comando ADD TRANDATA per ciascuna vista dualità JSON e tabelle di raccolta JSON da replicare. Ciò consente di essere a conoscenza delle viste dualità JSON e delle tabelle di raccolte JSON impostate per la replica in modo da evitare il sovraccarico del sistema.

Nota: i caratteri jolly non sono supportati quando si abilita la replica logica per le viste dualità JSON utilizzando ADD TRANDATA. Tuttavia, le tabelle di raccolta JSON supportano caratteri jolly come le tabelle normali, pertanto l'istruzione TABLE/MAP consente anche l'uso di caratteri jolly.

A partire dalla release 21c, questo comando consente inoltre di abilitare una tabella per l'acquisizione automatica per il database Oracle.

Per impostazione predefinita, ADD TRANDATA per Oracle abilita il log non condizionale della chiave primaria e il log supplementare condizionale di tutte le chiave univoche ed esterne della tabella specificata. per ulteriori informazioni su come Oracle GoldenGate gestisce il log supplementare per Oracle AI Database, vedere Ensuring Row Uniqueness in Source and Target Tables.

Se possibile, utilizzare il comando ADD SCHEMATRANDATA anziché il comando ADD TRANDATA. Il comando ADD SCHEMATRANDATA garantisce la continuità delle repliche nel caso in cui un'istruzione DML venga eseguita su un oggetto per il quale è stata appena eseguita un'istruzione DDL. È possibile escludere gli oggetti dalla specifica dello schema utilizzando i parametri di esclusione.

Per usufruire della funzione della replica DDL di Oracle GoldenGate, è necessario utilizzare il comando ADD SCHEMATRANDATA per registrare i dati supplementari richiesti.

Quando Si utilizza ADD SCHEMATRANDATA, è possibile utilizzare ADD TRANDATA con l'opzione COLS per registrare qualsiasi colonne non di chiave, quali ad esempio quelle necessarie per le istruzioni FILTER e le clausole KEYCOLS nei parametri TABLE e MAP.

Nota: è possibile utilizzare `ADD

           TRANDATA` for Oracle when DDL support is enabled, but only if you can stop DML on all tables before DDL is performed on them or, if that is not possible, you can guarantee that no users or applications will issue DDL that adds new tables whose names satisfy an object specification in a `TABLE` or `MAP` statement. There must be no possibility that users or applications will issue DDL that changes the key definitions of any tables that are already in the Oracle GoldenGate configuration.
           {: .infoboxnote}

Oracle consiglia di attivare la modalità di log forzato per il database di origine e di abilitare il log supplementare minimo a livello di database quando si utilizza Oracle GoldenGate. In questo modo si aggiungono le eventuali informazioni di concatenamento delle righe esistenti al redo log per le operazioni di aggiornamento.

Tenere presente quanto riportato di seguito quando si utilizza ADD TRANDATA per un Oracle AI Database.

PostgreSQL

Quando viene utilizzato il comando ADD TRANDATA, l'impostazione REPLICA IDENTITY della tabella viene modificata. L'impostazione REPLICA IDENTITY controlla il contenuto delle immagini precedenti delle colonne di una tabella da registrare Nel log della transazione per le operazioni UPDATE e DELETE.

SQL Server

Utilizzare ADD TRANDATA per fornire le informazioni della registrazione estesa di cui Oracle GoldenGate ha bisogno per ricostruire le operazioni SQL. Il log delle transazioni di SQL Server non fornisce informazioni sufficienti per impostazione predefinita.

Quando Si abilita TRANDATA, Oracle GoldenGate abilita la funzione Change Data Capture per SQL Server per il database e crea una tabella Change Data Capture per ogni istanza abilitata con TRANDATA.

Sintassi

ADD TRANDATA container.owner.table]
[, FILEGROUP filegroup-name]
[, NOSCHEDULINGCOLS | ALLCOLS]
[, ALLOWNONVALIDATEKEYS]
[, PARTIALJSON]
[, PREPARECSN  {WAIT | LOCK | NOWAIT | NONE}]

[container.]owner.table

Valido per Db2 LUW, Db2 z/OS, Oracle, PostgreSQL e SQL Server.

Specifica del nome a due o tre parti. Utilizzare il nome a due parti owner.table per tutti i database supportati ad eccezione di un container database multi-tenant Oracle.

Utilizzare il nome a tre parti container.owner.table per un container database multi-tenant Oracle. È possibile utilizzare un carattere jolly per qualsiasi componente. Utilizzato con un carattere jolly, ADD TRANDATA filtra i nomi che corrispondono ai nomi degli oggetti di sistema. Per utilizzare ADD TRANDATA per oggetti che non sono oggetti del sistema ma hanno nomi che corrispondono agli oggetti del sistema in un pattern di carattere jolly, eseguire ADD TRANDATA per tali oggetti senza utilizzare un carattere jolly.

Se si esegue il comando da cdb$root, accertarsi di impostare anche il seguente privilegio utente sul lato del database:

ALTER USER userID SET CONTAINER_DATA = ALL  CONTAINER = CURRENT;

schema.table [JOURNAL library/journal] | library/file [JOURNAL library/journal]

Valido per Db2 per i.

Specifica lo schema SQL e il nome di una tabella oppure la libreria e il nome file nativi. Se con il comando DEFAULTJOURNAL è stato impostato un diario predefinito è possibile omettere l'opzione JOURNAL, altrimenti è obbligatoria.

FILEGROUP filegroup-name

Valido per SQL Server.

(Facoltativo) È possibile designare il gruppo file in cui verranno posizionate le tabelle intermedie Change Data Capture del server SQL utilizzando l'opzione FILEGROUP con un nome del gruppo file esistente.

ADD TRANDATA owner.table FILEGROUP cdctables

È inoltre possibile utilizzare l'opzione FILEGROUP nel file GLOBALS se è necessario utilizzare lo stesso FILEGROUP per ogni tabella quando viene abilitato TRANDATA.

Nell'esempio seguente è illustrata l'impostazione del gruppo di FILEGROUP myFileGroup nel file GLOBALS:

FILEGROUP myFileGroup

Di seguito è riportato l'output:

Logging of supplemental log data is enabled for table dbo.test1 in filegroup
myFileGroup

In questo caso il comando ADD TRANDATA utilizza myFileGroup per tutte le tabelle.

Se si utilizza anche il parametro FILEGROUP con ADD TRANDATA, il comando sostituirà il nome dei gruppi di file definito nel file GLOBALS.

Ad esempio, se si imposta FILEGROUP myFileGroup nel file GLOBALS, quindi si esegue il comando ADD TRANDATA seguente:

ADD TRANDATA dbo.* FILEGROUP yourFileGroup

si otterrà questo output:

Logging of supplemental log data is enabled for table dbo.test1 in filegroup
yourFileGroup

In questo caso ADD TRANDATA utilizza yourFileGroup anziché myFileGroup per tutte le tabelle.

Se FILEGROUP non viene specificata in GLOBALS o con ADD TRANDATA, la riga del comando utilizza in considerazione il valore FILEGROUP predefinito del database durante l'aggiunta di TRANDATA della tabella. Ad esempio, se si esegue ADD TRANDATA dbo.*, verrà generato questo output:

Logging of supplemental log data is enabled for table dbo.test1 in filegroup
PRIMARY

In questo caso il nome FILEGROUP predefinito è Primary. Se si esegue il comando INFO TRANDATA, il nome FILEGROUP viene mostrato come PRIMARY.

NOSCHEDULINGCOLS | ALLCOLS

Valido per Oracle e PostgreSQL.

A partire da Oracle GoldenGate 21c, NOSCHEDULINGCOLS non è più valida per Oracle database 21c e versioni successive se il database in esecuzione supporta le funzionalità di acquisizione automatica.

Queste opzioni soddisfano i requisiti di registrazione di un Replicat integrato che elaborerà le tabelle specificate con ADD TRANDATA.

NOSCHEDULINGCOLS

Valido solo per Oracle.

Disabilita il log delle colonne di pianificazione. Per impostazione predefinita ADD TRANDATA abilita il log non condizionato della chiave primaria e il log supplementare condizionale di tutte le chiavi univoche e delle chiavi esterne della tabella specificata. Il log non condizionale comporta l'inserimento forzato dei valori di chiave primaria nel log, indipendentemente dal fatto che la chiave sia stata modificata o meno durante l'operazione corrente. Il log condizionale registra tutti i valori di colonna di una chiave esterna o univoca se almeno uno di essi è stato modificato durante l'operazione corrente. È necessario che tutte le chiavi primarie, le chiavi univoche e le chiavi esterne siano disponibili per il server in entrata per il calcolo delle dipendenze.

ALLCOLS

Abilita il log supplementare non condizionale di tutte le colonne di chiave e non di chiave della tabella. Questa opzione abilita il log delle chiavi necessarie per calcolare le dipendenze, nonché delle colonne da utilizzare per filtrare, risolvere i conflitti o altri scopi.


Per PostgreSQL, ALLCOLS imposta REPLICA IDENTITY per la tabella su FULL. L'opzione ALLCOLS viene specificata come parte del comando ADD TRANDATA, per abilitare la registrazione di tutte le colonne per le operazioni UPDATE e DELETE, anche se tali colonne non sono state modificate.

Per le tabelle prive di chiave primaria o indice univoco, l'opzione ALLCOLS è ridondante. Di seguito è riportata la sintassi:

ADD TRANDATA table_name ALLCOLS

COLS (columns)

Valido per Oracle.

Utilizzare l'opzione COLS per registrare colonne non di chiave specifiche. Può essere utilizzata per registrare le colonne specificate in una clausola KEYCOLS e le colonne che saranno necessarie per l'applicazione di filtri o la manipolazione di dati, una situazione che può rivelarsi più efficiente rispetto al recupero di tali valori con una clausola FETCHCOLS in un'istruzione TABLE. Separare più colonne con virgole, ad esempio NAME, ID, DOB.

INCLUDELONG | EXCLUDELONG

Valido per Db2 LUW.

Consente di controllare se il comando ALTER TABLE eseguito da ADD TRANDATA include o meno l'attributo INCLUDE LONGVAR COLUMNS. INCLUDELONG è l'impostazione predefinita. Quando ADD TRANDATA viene eseguito con questa opzione, Oracle GoldenGate esegue l'istruzione seguente:

ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;

Quando viene utilizzato EXCLUDELONG, il comando è il seguente:

ALTER TABLE name DATA CAPTURE CHANGES;

Quando si utilizza EXCLUDELONG, Oracle GoldenGate non supporta la funzionalità che richiede prima le immagini delle tabelle che includono colonne LONGVAR. Ad esempio, il parametro GETUPDATEBEFORES. Per supportare questa funzionalità, le modifiche relative alle colonne LONGVAR nei log delle transazioni devono includere sia le foto precedenti sia quelle successive del valore di colonna.

NOKEY

Valido per Db2 per i, Db2 LUW, Db2 z/OS e Oracle.

A partire da Oracle GoldenGate 21c, NOKEY non è più valida per Oracle Database 21c e versioni successive se il database in esecuzione supporta le funzionalità di acquisizione automatica.

Elimina il log supplementare delle colonne di chiave primaria. Se viene utilizzato NOKEY, utilizzare l'opzione COLS per registrare colonne alternative che fungono per chiavi e designare tali colonne come chiavi sostitutive mediante l'opzione KEYCOLS del parametro TABLE o MAP.

NOVALIDATE

Valido per Db2 per i, Db2 LUW, Db2 z/OS e Oracle.

Elimina le informazioni aggiuntive relative alla tabella elaborata da ADD TRANDATA. Per impostazione predefinita, questa opzione è abilitata. L'elaborazione delle informazioni aggiuntive comporta la creazione di un intervallo nella risposta del comando, pertanto questa opzione può essere utilizzata per aumentare il tempo di risposta.

ALLOWNONVALIDATEDKEYS

Valido per Db2 per i, Db2 LUW, Db2 z/OS e Oracle.

Include le chiavi primarie NON VALIDATED e NOT VALID nel log supplementare. Queste chiavi sostituiscono i normali criteri di selezione delle chiavi utilizzati da Oracle GoldenGate. Se viene utilizzato il parametro GLOBALS ALLOWNONVALIDATEDKEYS, ADD SCHEMATRANDATA verrà eseguito con ALLOWNONVALIDATEDKEYS, che sia stato specificato o meno. Per impostazione predefinita le chiavi primarie NON VALIDATED e NOT VALID non vengono registrate.

PARTIALJSON

Valido per Oracle.

Recupera gli aggiornamenti JSON parziali a livello di tabella. Se abilitato, il redo includerà i record JSON parziali.

Vedere anche il parametro TRANLOGOPTIONS FETCHPARTIALJSON.

PREPARECSN {WAIT | LOCK | NOWAIT | NONE}

Valida per Oracle sia per DML che per DDL. Prepara automaticamente le tabelle nell'origine in modo che il file di dump di esportazione di Oracle Data Pump includa i valori CSN di creazione delle istanze. Replicat utilizza il valore CSN di creazione delle istanze per tabella impostato da Oracle Data Pump (all'importazione) per filtrare i record di trail. Nella destinazione l'importazione di Data Pump popola le tabelle e le viste del sistema con i SCN di creazione delle istallazioni utilizzando il parametro DBOPTIONS ENABLE_INSTANTIATION_FILTERING per abilitare l'applicazione di filtri di creazione istanze a livello di tabella.

WAIT

Rimane in attesa di eventuali transazioni in esecuzione e prepara la creazione delle istanze di tabella.

LOCK

Applica un lock alla tabella (per preparare la creazione delle istanze di tabella).

NOWAIT

Funzionamento predefinito: la preparazione alla creazione delle istanze di tabella viene eseguita immediatamente.

NONE

Non si verifica alcuna preparazione per la creazione di istanze.

Esempi


Il comando riportato in questo esempio seguente determina l'esecuzione di una delle operazioni seguenti: registrazione della chiave primaria per una tabella Oracle o registrazione dei dati supplementari per una tabella SQL Server o DB2. La tabella verrebbe inoltre abilitata per l'acquisizione automatica.

ADD TRANDATA hr.employees

Nell'esempio seguente viene abilitato il log supplementare incondizionato di tutte le colonne di chiavi e non di chiavi della tabella denominata acct. La tabella verrebbe inoltre abilitata per l'acquisizione automatica.

ADD TRANDATA hr.employees ALLCOLS

L'esempio di Oracle AI Database riportato di seguito consente di registrare la chiave primaria più il nome e l'indirizzo delle colonne non chiave. La tabella verrebbe inoltre abilitata per l'acquisizione automatica.

ADD TRANDATA hr.employees, COLS (name, address)

Il seguente esempio di Oracle AI Database impedisce il log della chiave primaria, ma registra invece le colonne non chiave name e pid . La tabella verrebbe inoltre abilitata per l'acquisizione automatica.

ADD TRANDATA hr.employees, NOKEY, COLS (name, pid)

Nell'esempio seguente viene aggiunto il log senza che la tabella venga preparata per la creazione delle istanze. La tabella verrebbe inoltre abilitata per l'acquisizione automatica.

ADD TRANDATA hr.employees PREPARECSN NONE

Nell'esempio seguente viene eliminata l'elaborazione delle informazioni aggiuntive della tabella. La tabella verrebbe inoltre abilitata per l'acquisizione automatica.

ADD TRANDATA hr.employees.*name NOVALIDATE