Preparazione tabelle per l'elaborazione

Gli attributi della tabella riportati di seguito devono essere risolti in un ambiente Oracle GoldenGate per Teradata.

Disabilitazione dei trigger e dei vincoli in cascata

Disabilitare i trigger, applicare vincoli di eliminazione a catena e applicare vincoli di aggiornamento a catena alle tabelle Teradata di destinazione se Oracle GoldenGate replica DML da un'origine che si è verificata da un trigger o da un vincolo a catena. Se lo stesso trigger o vincolo viene attivato nella tabella di destinazione, diventa ridondante a causa dei dati di origine replicati e il database restituirà un errore. Si consideri l'esempio seguente, dove le tabelle di origine sono emp_src e salary_src e le tabelle di destinazione sono emp_targ e salary_targ.

  1. Viene emessa un'eliminazione per emp_src.

  2. Viene applicata un'eliminazione a salary_src.

  3. Oracle GoldenGate invia entrambe le eliminazioni alla destinazione.

  4. L'eliminazione padre arriva per prima e viene applicata a emp_targ.

  5. L'eliminazione padre applica un'eliminazione a catena a salary_targ.

  6. L'eliminazione a catena da salary_src viene applicata a salary_targ.

  7. Impossibile individuare la riga perché è già stata eliminata nel passo 5.

Garantire l'univocità delle righe per le tabelle

Oracle GoldenGate richiede una forma di identificativo di riga univoco nelle tabelle di origine e di destinazione per individuare le righe di destinazione corrette per gli aggiornamenti e le eliminazioni replicati.

A meno che non venga utilizzata una clausola KEYCOLS nell'istruzione TABLE o MAP, Oracle GoldenGate seleziona un identificativo di riga da utilizzare nell'ordine di priorità seguente: 1. Chiave primaria

  1. Prima chiave univoca in modo alfanumerico che non contiene un indicatore orario o una colonna calcolata non materializzata.

  2. Se non esiste alcun tipo di chiave precedente (anche se nella tabella potrebbero essere definiti altri tipi di chiavi), Oracle GoldenGate costruisce una pseudo chiave di tutte le colonne che il database consente di essere utilizzato in una chiave univoca, esclusi quelli non supportati da Oracle GoldenGate in una chiave o quelli esclusi dalla configurazione di Oracle GoldenGate.

Nota: se sono presenti altre chiavi non utilizzabili in una tabella o se non sono presenti chiavi nella tabella, Oracle GoldenGate registra un messaggio appropriato nel file di report. La creazione di una chiave da tutte le colonne impedisce le prestazioni di Oracle GoldenGate nel sistema di origine. Nella destinazione, questa chiave fa sì che Replicat utilizzi una clausola WHERE più grande e meno efficiente.

  1. Se una tabella non dispone di una chiave appropriata o se si preferisce che non vengano utilizzate le chiavi esistenti, è possibile definire una chiave sostitutiva se la tabella contiene colonne che contengono sempre valori univoci. Per definire questa chiave sostitutiva, includere una clausola KEYCOLS nel parametro Extract TABLE e nel parametro Replicat MAP. La chiave specificata sostituirà qualsiasi chiave primaria o univoca esistente trovata da Oracle GoldenGate. Vedere TABLE | MAP in Parameters and Functions Reference for Oracle GoldenGate.

Utilizzo di KEYCOLS per specificare una chiave personalizzata

Se una tabella non dispone di un identificativo di riga applicabile o se si preferisce che gli identificativi non vengano utilizzati, è possibile definire una chiave sostitutiva, a condizione che la tabella contenga sempre colonne contenenti valori univoci. Per definire questa chiave sostitutiva, includere una clausola KEYCOLS nel parametro Extract TABLE e nel parametro Replicat MAP. La chiave specificata sostituisce qualsiasi chiave primaria o univoca esistente trovata da Oracle GoldenGate.

Gestione di operazioni di aggiornamento ed eliminazione massicce

Le operazioni che aggiornano o eliminano un numero elevato di righe generano aggiornamenti ed eliminazioni discrete per ogni riga nel database dei sottoscrittori. Ciò potrebbe causare un overflow del lock manager sul sistema di sottoscrizione Teradata e quindi arrestare il processo Replicat.

Per evitare questi errori, sospendere temporaneamente la replica di queste operazioni e quindi eseguirle manualmente sui sistemi di origine e di destinazione. Per sospendere la replica, utilizzare il comando seguente, che sospende la replica solo per quella sessione. Le operazioni di altre sessioni su quella tabella vengono replicate normalmente.

set session override replication on;
commit;