Rilevamento automatico dei conflitti e risoluzione
Quando Oracle GoldenGate replica le modifiche tra i database Oracle, è possibile configurare e gestire il rilevamento e la risoluzione automatici dei conflitti di Oracle GoldenGate nei database Oracle. Nota: la funzione Rilevamento e risoluzione automatici dei conflitti è disponibile in Oracle Database 12c Release 2 (12.2) e versioni successive e funziona con Oracle GoldenGate 12c (12.3.0.1) e versioni successive. È disponibile una funzione manuale di rilevamento e risoluzione dei conflitti, denominata rilevamento e risoluzione dei conflitti Oracle GoldenGate (CDR). Il CDR di Oracle GoldenGate è configurato nel file dei parametri Replicat. Per ulteriori informazioni su Oracle GoldenGate CDR, vedere Manual Conflict Detection and Resolution.
Informazioni sul rilevamento e la risoluzione automatici dei conflitto
Quando Oracle GoldenGate replica le modifiche tra i database Oracle, è possibile configurare e gestire automaticamente il rilevamento e la risoluzione dei conflitti di Oracle GoldenGate in questi database.
Questa funzione è destinata all'uso con configurazioni attive-attive, in cui Oracle GoldenGate deve gestire la sincronizzazione dei dati tra più database che contengono gli stessi data set.
Nota: funzione di rilevamento e risoluzione automatica dei conflitti (ACDR) disponibile solo quando si utilizza Oracle GoldenGate con Oracle AI Database. Per i database non Oracle, è disponibile una funzione di rilevamento e risoluzione manuale dei conflitti (CDR) con Oracle GoldenGate. Il CDR di Oracle GoldenGate è configurato nel file dei parametri Replicat.
Rilevamento automatico dei conflitti e risoluzione
È possibile configurare il rilevamento e la risoluzione automatici dei conflitti in una configurazione Oracle GoldenGate che replica le tabelle tra i database Oracle. Per configurare il rilevamento e la risoluzione automatici dei conflitti per una tabella, è necessario chiamare la procedura ADD_AUTO_CDR nel pacchetto DBMS_GOLDENGATE_ADM. Prerequisito per l'impostazione del rilevamento e della risoluzione automatici dei conflitti, l'utente di Oracle GoldenGate deve disporre dei privilegi appropriati. Per ulteriori informazioni sui privilegi utente, vedere Concedi privilegi utente per Oracle AI Database 26ai e versioni successive e Concedi privilegi utente per Oracle Database 21c e versioni successive.
Quando si chiama ADD_AUTO_CDR, l'utente amministratore deve aver eseguito il login al PDB appropriato. Sono state aggiunte le seguenti costanti, che rappresentano le bandiere bit:
-
EARLIEST_TIMESTAMP_RESOLUTIONimposta automaticamenteTOMBSTONE KEY VERSIONING -
DELETE_ALWAYS_WINSimposta automaticamenteTOMBSTONE KEY VERSIONING. -
IGNORE_SITE_PRIORITY
L'esempio seguente utilizza un comando ALTER per la tabella HR.EMPLOYEES.
BEGIN
dbms_goldengate_adm.alter_auto_cdr
(schema_name => 'HR'
,table_name => 'EMPLOYEES'
,additional_options => DBMS_GOLDENGATE_ADM.ADDITIONAL_OPTIONS_ADD_KEY_VERSION );
END;
/
Vedere la descrizione di additional_options in ADD_AUTO_CDR Procedure di Oracle AI Database PL/SQL Packages and Types Reference.
Quando Oracle GoldenGate acquisisce le modifiche originate da un Oracle AI Database, ogni modifica viene incapsulata in un record LCR (Logical Change Record) di riga. Un LCR di riga è una rappresentazione strutturata di una modifica di riga DML. Ogni LCR di riga include il tipo di operazione, i vecchi valori di colonna e i nuovi valori di colonna. LCR a più righe possono far parte di una singola transazione del database.
Quando più di una replica di una tabella consente modifiche alla tabella, può verificarsi un conflitto quando viene apportata una modifica alla stessa riga in due database diversi quasi contemporaneamente. Oracle GoldenGate replica le modifiche utilizzando gli LCR di riga. Rileva un conflitto confrontando i valori precedenti nell'LCR di riga per la modifica iniziale dal database di origine con i valori correnti della riga di tabella corrispondente nel database di destinazione identificato dalle colonne chiave. Se un valore di colonna qualsiasi non corrisponde, si verifica un conflitto.
Dopo aver rilevato un conflitto, Oracle GoldenGate può risolvere il conflitto sovrascrivendo i valori nella riga con alcuni valori dell'LCR della riga, ignorando i valori nell'LCR della riga o calcolando un delta per aggiornare i valori della riga.
Il rilevamento e la risoluzione automatici dei conflitti non richiedono modifiche all'applicazione per i seguenti motivi:
-
Oracle AI Database crea e gestisce automaticamente colonne con indicatore orario invisibile.
-
Gli inserimenti, gli aggiornamenti e le eliminazioni utilizzano la tabella di log Elimina lapide per determinare se una riga è stata eliminata.
-
È possibile rilevare conflitti di colonna LOB.
-
Oracle AI Database configura automaticamente il log supplementare sulle colonne necessarie.
Suggerimento:
Fare inoltre riferimento a Oracle AI Database Utilities per informazioni sul log supplementare
Requisiti per il rilevamento e la risoluzione automatici dei conflitto
Di seguito sono riportati i requisiti chiave per la configurazione del CDR automatico in Oracle GoldenGate.
-
La registrazione supplementare è necessaria per garantire che ogni LCR di riga disponga delle informazioni necessarie per rilevare e risolvere un conflitto. Il log supplementare inserisce ulteriori informazioni nel redo log per le colonne di una tabella quando viene eseguita un'operazione DML sulla tabella. Quando si configura una tabella per il rilevamento e la risoluzione dei conflitti di Oracle GoldenGate, il log supplementare viene configurato automaticamente per tutte le colonne della tabella. Le informazioni aggiuntive nel redo log vengono inserite in un LCR quando viene replicata una modifica di tabella.
L'estrazione deve essere utilizzata per l'acquisizione. Replicat integrato o Replicat parallelo in modalità integrata devono essere utilizzati sul lato di applicazione.
LOGALLSUPCOLSdeve rimanere l'impostazione predefinita. -
Esiste un campo nascosto
KEYVER$$di tipo indicatore orario aggiunto facoltativamente alla tabellaDELETE TOMBSTONE. Questo campo è obbligatorio per la risoluzioneEARLIEST TIMESTAMP,DELETE ALWAYS WINSeSITE PRIORITYed esiste anche nella tabella di base. L'esistenza del campo nella tabella di base deve essere fornita nei metadati del file trail come flag o token.Gli aggiornamenti della chiave primaria sono supportati anche nella tabella
DELETE TOMBSTONE. Nella tabellaDELETE TOMBSTONEviene inserita una voce per la riga del valore della chiave originale (prima dell'immagine). Anche la logica in Extract, che corrisponde a INSERTS nella tabellaDELETE TOMBSTONEa DELETES, deve essere abbinata agli aggiornamenti PK o alla chiave univoca (UK) con almeno un campo non annullabile, se non è presente PK. -
SITE PRIORITYrichiede il supporto di Replicat prima che i parametri vengano implementati e l'impostazione venga passata a Replicat. -
CDR automatico non funziona con altre eccezioni di livello
MAPe configurazioni di gestione degli errori, ad esempioREPERROR,MAPEXCEPTION. È possibile utilizzare Automatic CDR oREPERROR/MAPEXCEPTION, ma non entrambi nella stessa tabella. Per ulteriori informazioni, vedereTABLE \| MAPeREPERROR.
Compatibilità e migrazione
Se la tabella di base nel database di origine non contiene la colonna KEYVER$$, ma la tabella di base di destinazione dispone di DELETE e gli aggiornamenti delle chiavi primarie causano un errore nel database di destinazione per le risoluzioni EARLIEST TIMESTAMP, DELETE ALWAYS WINS e SITE PRIORITY.
Quando si esegue la replica da una tabella di base, che dispone di un valore KEYVER$$ in una tabella di destinazione, che non lo è, la colonna KEYVER$$ viene ignorata.
Gruppi di colonne
Un gruppo di colonne è un raggruppamento logico di una o più colonne in una tabella replicata. Quando si aggiunge un gruppo di colonne, il rilevamento e la risoluzione dei conflitti vengono eseguiti sulle colonne del gruppo di colonne separatamente dalle altre colonne della tabella.
Quando si configura una tabella per il rilevamento e la risoluzione dei conflitti di Oracle GoldenGate con la procedura ADD_AUTO_CDR, tutte le colonne scalari della tabella vengono aggiunte a un gruppo di colonne predefinito. Per definire altri gruppi di colonne per la tabella, eseguire la procedura ADD_AUTO_CDR_COLUMN_GROUP. Tutte le colonne della tabella che non fanno parte di un gruppo di colonne definito dall'utente rimangono nel gruppo di colonne predefinito per la tabella.
I gruppi di colonne consentono a database diversi di aggiornare colonne diverse nella stessa riga quasi contemporaneamente senza causare conflitti. Quando i gruppi di colonne sono configurati per una tabella, è possibile evitare conflitti anche se database diversi aggiornano la stessa riga nella tabella. Non viene rilevato un conflitto se gli aggiornamenti modificano i valori delle colonne in gruppi di colonne diversi.
Figura 1: Gruppi di colonne

Questo esempio mostra una riga replicata nel database A e nel database B. I seguenti due gruppi di colonne sono configurati per la tabella replicata in ciascun database:
-
Un gruppo di colonne include la colonna
Office. La colonna indicatore orario invisibile per questo gruppo di colonne èTS1. -
Un altro gruppo di colonne include le colonne
TitleeSalary. La colonna indicatore orario invisibile per questo gruppo di colonne èTS2.
Questi gruppi di colonne consentono al database A e al database B di aggiornare la stessa riga quasi contemporaneamente senza causare conflitti. In particolare, vengono apportate le modifiche indicate di seguito.
-
Nel database A, il valore di
Officeè stato modificato da1080in1030. -
Nel database B, il valore di
Titleè stato modificato daMTS1inMTS2.
Poiché la colonna Office e la colonna Title si trovano in gruppi di colonne diversi, le modifiche vengono replicate senza che venga rilevato un conflitto. Il risultato è che i valori nella riga sono uguali in entrambi i database dopo che ogni modifica è stata replicata.
Aggiornamenti LOB Piecewise
Un set di operazioni LOB composte da LOB WRITE, LOB ERASE e LOB TRIM è un aggiornamento LOB piecewise. Quando una tabella che contiene colonne LOB è configurata per il rilevamento e la risoluzione dei conflitti, ogni colonna LOB viene posizionata nel proprio gruppo di colonne e il gruppo di colonne ha la propria colonna indicatore orario nascosto. La colonna dell'indicatore orario viene aggiornata nella prima operazione LOB piecewise.
Per una colonna LOB, un conflitto viene rilevato e risolto nei modi seguenti:
-
Se l'indicatore orario per il gruppo di colonne del LOB è successivo al gruppo di colonne del LOB corrispondente nella riga, viene applicato l'aggiornamento del LOB a caratteri piecewise.
-
Se l'indicatore orario per il gruppo di colonne del LOB è precedente al gruppo di colonne del LOB corrispondente nella riga, il LOB nella riga della tabella viene mantenuto.
-
Se la riga non esiste nella tabella, viene generato un errore.
Rilevamento e risoluzione conflitti indicatore orario meno recente
Le colonne con nomi nel formato CDRTS$ column group e CDRTS$ROW vengono utilizzate per contenere indicatori orari che riflettono gli orari di modifica per i gruppi di colonne e la riga.
Nota: le tabelle con simboli $ o $$ sono tabelle interne o nascoste.
DBMS_GOLDENGATE_ADM include le seguenti procedure per la configurazione della risoluzione dell'indicatore orario più recente e più recente:
-
ADD_AUTO_CDR() -
ADD_AUTO_CDR_COLUMN_GROUP() -
REMOVE_AUTO_CDR() -
REMOVE_AUTO_CDR_COLUMN_GROUP() -
ALTER_AUTO_CDR() -
ALTER_AUTO_CDR_COLUMN_GROUP()
Il campo ADDITIONAL_OPTIONS sia in ADD_AUTO_CDR() che in ALTER_AUTO_CDR() attiva l'uso dell'indicatore orario meno recente. L'attivazione dell'indicatore orario meno recente attiva automaticamente il controllo delle versioni, che aggiunge una nuova colonna nascosta KEYVER$$ (numero di versione) di tipo indicatore orario. Viene aggiunto un nuovo valore di flag per indicare l'uso dell'indicatore orario meno recente. Questo campo viene aggiunto anche alla tabella DELETE TOMBSTONE. I conflitti di eliminazione sono il motivo per cui è necessario il numero di versione. Con una risoluzione dell'indicatore orario meno recente, i conflitti di eliminazione, che possono essere trasparenti, potrebbero non solo avere esito errato, ma impedire nuovi inserimenti della riga (nuove versioni). Con un indicatore orario della versione, l'eliminazione può essere risolta correttamente in base a un DML di riga per la stessa versione di riga.
L'inserimento originale della riga riceve l'indicatore orario corrente dal relativo valore predefinito. L'eliminazione di questa riga inserisce quindi il numero di versione e l'ora in cui è stata inserita la riga nella tabella delle pietre tombali in caso di eliminazione. Su un nuovo inserto, per impostazione predefinita, il numero di versione riceve di nuovo l'indicatore orario corrente, evitando così un falso conflitto con le voci di eliminazione presenti nella tabella della lapide.
Esempio
Si supponga di disporre di una tabella tab1 coerente a livello globale tra i database del sito 1 e del sito 2.
La tabella contiene una chiave (primaria). ACDR gestisce automaticamente una versione della chiave (kv) e un indicatore orario (ts) come colonne per la tabella di base (nascosta) e la tabella di lapide. Per la versione chiave kv e l'indicatore orario ts
Database 1: insert tab1 key1 kv1 ts1
Database 2: delete tab1 key1 kv1 ts1
Inserimento alla tabella DELETE TOMBSTONE key1 kv1 ts1
Database 1: insert tab1 key1 kv2 ts2
Senza utilizzare la versione della chiave, l'inserimento verrà ignorato, l'indicatore orario di eliminazione è precedente. Poiché viene utilizzata la versione chiave, si sa che kv2 non è la versione della riga eliminata e l'inserimento viene eseguito correttamente.
Rilevamento e risoluzione conflitti indicatore orario più recente
Quando si esegue la procedura ADD_AUTO_CDR nel package DBMS_GOLDENGATE_ADM per configurare una tabella per il rilevamento e la risoluzione automatici dei conflitti di Oracle GoldenGate, alla tabella viene aggiunta una colonna con indicatore orario nascosto. Questa colonna indicatore orario nascosto registra l'ora di una modifica di riga e viene utilizzata per rilevare e risolvere i conflitti.
Quando viene applicato un LCR di riga, può verificarsi un conflitto per un'operazione INSERT, UPDATE o DELETE. Nella tabella seguente vengono descritti ogni tipo di conflitto e le relative modalità di risoluzione.
| Operazione | Rilevamento dei conflitti | Risoluzione dei conflitti |
|---|---|---|
INSERT |
Viene rilevato un conflitto quando la tabella ha lo stesso valore per una colonna chiave del nuovo valore nell'LCR riga. | Se l'indicatore orario della riga LCR è successivo all'indicatore orario nella riga della tabella, i valori nella riga LCR sostituiscono i valori nella tabella. Se l'indicatore orario della riga LCR è precedente all'indicatore orario nella riga della tabella, l'LCR della riga viene eliminato e i valori della tabella vengono mantenuti. |
UPDATE |
Un conflitto viene rilevato in ciascuno dei seguenti casi:
|
Se esiste una mancata corrispondenza di valori e l'indicatore orario della riga LCR è successivo all'indicatore orario nella riga della tabella, i valori nella riga LCR sostituiscono i valori nella tabella. Se esiste una mancata corrispondenza di valori e l'indicatore orario della riga LCR è precedente all'indicatore orario nella riga della tabella, l'LCR della riga viene eliminato e i valori della tabella vengono mantenuti. Se la riga della tabella non esiste e l'indicatore orario della riga LCR è successivo all'indicatore orario nella riga della tabella delle pietre tombali, l'LCR della riga viene convertito da un'operazione Se la riga della tabella non esiste e l'indicatore orario dell'LCR della riga è precedente all'indicatore orario nella riga della tabella della lapide, l'LCR della riga viene eliminato. Se la riga della tabella non esiste e non è presente alcuna riga corrispondente nella tabella di lapidazione, l'LCR della riga viene convertito da un'operazione |
DELETE |
Un conflitto viene rilevato in ciascuno dei seguenti casi:
|
Se l'indicatore orario della riga LCR è successivo all'indicatore orario nella tabella, eliminare la riga dalla tabella. Se l'indicatore orario della riga LCR è precedente all'indicatore orario nella tabella, l'LCR della riga viene eliminato e i valori della tabella vengono mantenuti. Se l'eliminazione riesce, registrare l'LCR della riga inserendolo nella tabella delle lapidi. Se la riga della tabella non esiste, registrare l'LCR della riga inserendolo nella tabella della lapide. |
Nell'immagine seguente viene visualizzata la risoluzione dei conflitti tra database A e database B. 
Questo esempio mostra una riga replicata nel database A e nel database B. Le colonne del database sono Name, RowTS, Office, Title e Salary. La colonna RowTS è la colonna invisibile in entrambi i database. C'è un aggiornamento nella colonna Office nel database A e allo stesso tempo c'è un aggiornamento nella colonna Title nel database B. Ciò causa un conflitto e la risoluzione di questo conflitto viene eseguita applicando il metodo dell'indicatore orario più recente.
-
Nel database A, il valore nella colonna
Officeviene aggiornato da 1080 a 1103 e il valore RowTS viene modificato da @TS10 a @TS20. Una freccia indica che questa modifica viene replicata nel database B. -
Nel database B, il valore della colonna
Titlecambia da MTS1 a MTS2 e il valore RowTS cambia da @TS10 a @TS22. -
Per risolvere questo conflitto, vince l'indicatore orario più recente esistente nel database B. Ciò implica che le modifiche al database A non vengono applicate. I valori finali applicati al database A e al database B sono Scott, @TS22, 1080, MTS2, 100.
Risoluzione dei conflitti delta
Con il rilevamento dei conflitti delta, si verifica un conflitto quando un valore nell'elenco di colonne precedente dell'LCR riga è diverso dal valore per la riga corrispondente nella tabella.
Per configurare il rilevamento e la risoluzione dei conflitti delta per una tabella, eseguire la procedura ADD_AUTO_CDR_DELTA_RES nel pacchetto DBMS_GOLDENGATE_ADM. Il metodo di risoluzione delta non dipende da un indicatore orario o da una colonna di risoluzione aggiuntiva. Con la risoluzione dei conflitti delta, il conflitto viene risolto aggiungendo la differenza tra i valori nuovi e vecchi nell'LCR riga al valore nella tabella. Questo metodo di risoluzione viene generalmente utilizzato per i dati finanziari, ad esempio un saldo del conto. Ad esempio, se un saldo bancario viene aggiornato contemporaneamente in due sedi, il valore convergente contabilizza tutti i debiti e i crediti.
Nella figura seguente viene fornito un esempio che illustra il rilevamento e la risoluzione dei conflitti delta.
Figura 2: Rilevamento e risoluzione dei conflitti delta

Questo esempio mostra una riga replicata nel database A e nel database B. La colonna Balance viene designata come colonna su cui viene eseguita la risoluzione dei conflitti delta e la colonna RowTS è la colonna indicatore orario invisibile per tenere traccia dell'ora di ogni modifica nella colonna Balance. Viene apportata una modifica al valore Balance nella riga in entrambi i database quasi contemporaneamente (@T20 nel database A e @T22 nel database B). Queste modifiche determinano un conflitto e la risoluzione del conflitto delta viene utilizzata per risolvere il conflitto nel modo seguente:
-
Nel database A, il valore di
Balanceè stato modificato da1000in1750. Pertanto, il valore è stato aumentato di 750. -
Nel database B, il valore di
Balanceè stato modificato da1000in950. Di conseguenza, il valore è diminuito di 50. -
Per risolvere il conflitto nel database A, il valore della differenza tra i valori nuovo e precedente nella riga LCR e il valore nella tabella. La differenza tra i valori nuovi e vecchi nel rapporto copertura liquidità è (1000+750-50=1700). Il valore corrente nella tabella è aumentato di 700 in modo che il valore dopo la risoluzione dei conflitti sia 1700.
-
Per risolvere il conflitto nel database B, il valore della differenza tra i valori nuovi e precedenti nella riga LCR e il valore nella tabella. La differenza tra i valori nuovi e vecchi nel rapporto copertura liquidità è 750 (1000 - 50 + 750) = 1700. Pertanto, il valore corrente nella tabella (950) è aumentato di 750 in modo che il valore dopo la risoluzione dei conflitti sia 1700.
Dopo la risoluzione del conflitto delta, il valore della colonna Balance è lo stesso per la riga nel database A e nel database B.
CDR priorità sito
Nota: la risoluzione SITE PRIORITY ha la precedenza su tutte le impostazioni di risoluzione COLUMN GROUP.
Nota: se il parametro Replicat SITE PRIORITY non viene posizionato prima delle istruzioni mappa applicabili nel file dei parametri, non funzionerà. Questo parametro deve essere posizionato prima delle istruzioni mappa applicabili.
La risoluzione delle priorità è specificata nel file dei parametri Replicat tra l'origine e la destinazione per la risoluzione dei conflitti.
SITE PRIORITY è abilitato per un database o un PDB nel file dei parametri Replicat con il parametro ACDR SITE_PRIORITY {source_db_name}{OVERWRITE | IGNORE }, specificato per attivare la risoluzione SITE PRIORITY per una tabella.
Se si specifica l'opzione OVERWRITE, la tabella di origine assume la priorità e i conflitti vengono risolti da OVERWRITE. Al contrario, se si specifica l'opzione IGNORE, la tabella di destinazione assume la priorità e le modifiche apportate alla tabella di origine vengono ignorate in caso di conflitto.
La risoluzione SITE PRIORITY può essere disabilitata dal campo ADDITIONAL_OPTIONS nella procedura ADD_AUTO_CDR() nel pacchetto DBMS_GOLDENGATE_ADM e ALTER_AUTO_CDR() impostando IGNORE_SITE_PRIORITY.
Ogni relazione origine-destinazione Replicat può essere impostata in modo diverso, pertanto la convergenza dipende dall'impostazione dell'utente.
Elimina CDR indicatore orario vince sempre
DELETE ALWAYS WINS è abilitato tramite il campo ADDITIONAL_OPTIONS sia nelle procedure DBMS_GOLDENGATE_ADM ADD_AUTO_CDR() che in ALTER_AUTO_CDR(). Si tratta di un nuovo metodo di eliminazione della risoluzione dei conflitti, che non utilizza la risoluzione dell'indicatore orario più recente, pertanto è necessario eseguire il controllo delle versioni. L'attivazione di DELETE ALWAYS WINS attiva automaticamente il controllo delle versioni, che aggiunge una nuova colonna nascosta KEYVER$$ (numero di versione) di tipo indicatore orario. Un nuovo valore di flag viene aggiunto anche a acdrflags_kqldtvc per indicare l'uso di DELETE ALWAYS WINS. Questo campo viene aggiunto anche alla tabella DELETE TOMBSTONE. Esistono gli stessi problemi di controllo delle versioni della risoluzione EARLIEST TIMESTAMP.
Esempio:
Versione chiave kv e indicatore orario ts
Database 1: insert tab1 key1 kv1 ts1
Database 2: delete tab1 key1 kv1 ts1
Inserimento nella tabella DELETE TOMBSTONE key1 kv1 ts1
Database 1: insert tab1 key1 kv2 ts2
Senza utilizzare la versione chiave, l'inserto verrebbe ignorato, l'eliminazione vince sempre. Poiché viene utilizzata la versione chiave, si sa che kv2 non è la versione della riga eliminata e l'inserimento viene eseguito correttamente.
DELETE TOMBSTONE Tabella
La tabella DELETE TOMBSTONE è un indicatore per un record eliminato per distinguerlo da un record mai esistito. Una tabella DELETE TOMBSTONE contiene almeno le colonne chiave e l'indicatore orario dell'operazione. Queste informazioni sono necessarie per eliminare la convergenza perché alcuni aggiornamenti e inserimenti in entrata potrebbero essere ritardati da un altro sito e l'LCR in entrata deve essere filtrato in base all'indicatore orario dell'operazione della lapide per determinare se deve essere applicato.
Traccia aggiornamenti chiave primaria in Elimina Tombstone
Il supporto completo degli aggiornamenti della chiave primaria (PK) richiede la gestione dei conflitti sia sulle righe rappresentate dall'immagine precedente della chiave che sulla riga rappresentata dall'immagine successiva della chiave. Un aggiornamento PK è un'eliminazione e un inserimento autonomi, quindi i conflitti di aggiornamento PK devono essere supportati come eliminazione per i conflitti con l'immagine precedente della chiave e vengono inseriti con l'immagine successiva della chiave (e della riga).
Supportare l'aggiornamento PK come eliminazione della riga rappresentata dall'immagine precedente della chiave significa che dovrebbe essere inserita nella tabella di eliminazione della lapide come eliminazione. Viene aggiunto un trigger interno di aggiornamento da inserire nella tabella delle lapidi quando il PK viene aggiornato (in realtà la chiave di identificazione della riga, il PK se esiste o il Regno Unito scelto con almeno una colonna non annullabile). Poiché un aggiornamento PK può portare a due conflitti, vengono tentate fino a due risoluzioni a livello di riga, l'eliminazione della riga con il PK originale e l'inserimento della riga con il nuovo PK.
Esempio: utilizzo della risoluzione dell'indicatore orario più recente
Database 1: aggiornamento a tab1 key1 at ts1
Database 2: aggiornamento a tab1 key1 set key1 to key2 ts2
Database 3: aggiornamento a tab1 key2 ts3
In questo scenario, sembra che a livello di riga tab1 la riga con key1 debba essere eliminata e l'aggiornamento del database 3 debba essere la modifica finale della chiave di riga tab1
- Se invece il database 2 si trova in
ts3e il database 3 si trova ints3, l'aggiornamento PK al database 2 sarà la modifica finale della rigatab1key2.
Ora, si consideri un caso in cui il database 1 si trovava in ts3, il database 2 in ts2 e il database 3 in ts1, quindi l'aggiornamento alla riga tab1 key1 nel database 1 dovrebbe avere successo e l'aggiornamento PK dal database 2 nella riga tab1 key2 dovrebbe avere successo. A questo punto, sembra che la risoluzione completa sia che l'eliminazione all'immagine precedente e l'inserimento all'immagine successiva devono essere risolti separatamente. Ciò implica che non sono dipendenti l'uno dall'altro e una perdita per uno, non è una perdita per entrambi.
Configurazione del rilevamento e della risoluzione del conflitto delta
La procedura ADD_AUTO_CDR_DELTA_RES nel pacchetto DBMS_GOLDENGATE_ADM configura il rilevamento e la risoluzione dei conflitti delta.
Con la risoluzione dei conflitti delta, si specifica una colonna per la quale vengono rilevati e risolti i conflitti. Il conflitto viene rilevato se il valore della colonna nell'LCR riga non corrisponde al valore corrispondente nella tabella. Il conflitto viene risolto aggiungendo la differenza tra i valori nuovi e vecchi nell'LCR riga al valore nella tabella.
È possibile configurare un amministratore di Oracle GoldenGate utilizzando la procedura GRANT_ADMIN_PRIVILEGE nel package DBMS_GOLDENGATE_ADM.
-
Connettersi al database server in entrata come amministratore di Oracle GoldenGate.
-
Eseguire la procedura
ADD_AUTO_CDRe specificare la tabella da configurare per il rilevamento e la risoluzione dei conflitti degli indicatori orari più recenti. -
Eseguire la procedura
ADD_AUTO_CDR_DELTA_RESe specificare la colonna in cui viene eseguito il rilevamento e la risoluzione dei conflitti delta. -
Ripetere i passi precedenti in ogni Oracle AI Database che replica la tabella.
Esempio 9-23 Configurazione del rilevamento e della risoluzione dei conflitti delta per una tabella
Questo esempio configura il rilevamento e la risoluzione dei conflitti delta per la colonna order_total nella tabella oe.orders.
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR(
SCHEMA_NAME => 'OE',
TABLE_NAME => 'ORDERS');
END;
/
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_DELTA_RES(
SCHEMA_NAME => 'OE',
TABLE_NAME => 'ORDERS',
COLUMN_NAME => 'ORDER_TOTAL');
END;
/
Configurazione del rilevamento e della risoluzione dei conflitti dell'indicatore orario più recente
La procedura ADD_AUTO_CDR nel pacchetto DBMS_GOLDENGATE_ADM configura il rilevamento e la risoluzione dei conflitti dell'indicatore orario più recenti. La procedura ADD_AUTO_CDR_COLUMN_GROUP aggiunge gruppi di colonne facoltativi.
Per Oracle AI Database 26ai e versioni successive esistono metodi aggiuntivi per gestire e gestire le tabelle configurate ACDR. È possibile conservare le colonne correlate a AUTO-CDR di base come colonne UNUSED oppure eliminarle immediatamente dopo aver richiamato la procedura REMOVE_AUTO_CDR.
Se si applica la procedura ADD_AUTO_CDR a una tabella, per impostazione predefinita le relative colonne interne vengono contrassegnate come non utilizzate se AUTO_CDR viene rimosso. Dopo aver chiamato REMOVE_AUTO_CDR, le colonne inutilizzate potrebbero essere eliminate manualmente in una fase successiva o possono essere rimosse immediatamente utilizzando alcuni parametri aggiuntivi. Per informazioni dettagliate, vedere Rimozione del rilevamento e della risoluzione dei conflitti da una tabella.
Per ulteriori informazioni, vedere ADD_AUTO_CDR Procedure in Oracle AI Database PL/SQL Packages and Types Reference
Con il rilevamento e la risoluzione dei conflitti dell'indicatore orario più recenti, viene rilevato un conflitto quando la colonna dell'indicatore orario del record LCR della riga non corrisponde all'indicatore orario della riga della tabella corrispondente. LCR riga viene applicato se l'indicatore orario è successivo. In caso contrario, l'LCR della riga viene eliminato e la riga della tabella non viene modificata. Quando si esegue la procedura ADD_AUTO_CDR, viene aggiunta una colonna indicatore orario invisibile per ogni riga della tabella specificata e viene configurata la rilevazione e la risoluzione dei conflitti dell'indicatore orario. Quando si utilizza la procedura ADD_AUTO_CDR_COLUMN_GROUP per aggiungere uno o più gruppi di colonne, viene aggiunto un indicatore orario per il gruppo di colonne e viene configurato il rilevamento e la risoluzione dei conflitti di indicatori orari per il gruppo di colonne.
È possibile configurare un amministratore di Oracle GoldenGate utilizzando la procedura GRANT_ADMIN_PRIVILEGE nel package DBMS_GOLDENGATE_ADM.
-
Connettersi al database server in entrata come amministratore di Oracle GoldenGate.
-
Eseguire la procedura
ADD_AUTO_CDRe specificare la tabella da configurare per il rilevamento e la risoluzione dei conflitti degli indicatori orari più recenti. -
Eseguire la procedura
ADD_AUTO_CDR_COLUMN_GROUPe specificare uno o più gruppi di colonne nella tabella. -
Ripetere i passi precedenti in ogni Oracle AI Database che replica la tabella.
Esempio 9-24 Configurazione del rilevamento e della risoluzione dei conflitti dell'indicatore orario più recente per una tabella
Questo esempio configura il rilevamento e la risoluzione dei conflitti dell'indicatore orario più recenti per la tabella hr.employees.
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR(
SCHEMA_NAME => 'HR',
TABLE_NAME => 'EMPLOYEES');
END;
/
Esempio 9-25 Configurazione dei gruppi di colonne
Questo esempio configura i seguenti gruppi di colonne per la risoluzione dei conflitti di indicatori orari nella tabella HR.EMPLOYEES:
-
Il gruppo di colonne
JOB_IDENTIFIER_CGinclude le colonneJOB_ID,DEPARTMENT_IDeMANAGER_ID. -
Il gruppo di colonne
COMPENSATION_CGinclude le colonneSALARYeCOMMISSION_PCT.
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_COLUMN_GROUP(
SCHEMA_NAME => 'HR',
TABLE_NAME => 'EMPLOYEES',
COLUMN_LIST => 'JOB_ID, DEPARTMENT_ID, MANAGER_ID',
COLUMN_GROUP_NAME => 'JOB_IDENTIFIER_CG');
END;
/
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_COLUMN_GROUP(
SCHEMA_NAME => 'HR',
TABLE_NAME => 'EMPLOYEES',
COLUMN_LIST => 'SALARY, COMMISSION_PCT',
COLUMN_GROUP_NAME => 'COMPENSATION_CG');
END;
/
Configurazione del rilevamento e della risoluzione del conflitto delta
La procedura ADD_AUTO_CDR_DELTA_RES nel pacchetto DBMS_GOLDENGATE_ADM configura il rilevamento e la risoluzione dei conflitti delta.
Con la risoluzione dei conflitti delta, si specifica una colonna per la quale vengono rilevati e risolti i conflitti. Il conflitto viene rilevato se il valore della colonna nell'LCR riga non corrisponde al valore corrispondente nella tabella. Il conflitto viene risolto aggiungendo la differenza tra i valori nuovi e vecchi nell'LCR riga al valore nella tabella.
È possibile configurare un amministratore di Oracle GoldenGate utilizzando la procedura GRANT_ADMIN_PRIVILEGE nel package DBMS_GOLDENGATE_ADM.
-
Connettersi al database server in entrata come amministratore di Oracle GoldenGate.
-
Eseguire la procedura
ADD_AUTO_CDRe specificare la tabella da configurare per il rilevamento e la risoluzione dei conflitti degli indicatori orari più recenti. -
Eseguire la procedura
ADD_AUTO_CDR_DELTA_RESe specificare la colonna in cui viene eseguito il rilevamento e la risoluzione dei conflitti delta. -
Ripetere i passi precedenti in ogni Oracle AI Database che replica la tabella.
Esempio 9-26 Configurazione del rilevamento e della risoluzione dei conflitti delta per una tabella
Questo esempio configura il rilevamento e la risoluzione dei conflitti delta per la colonna order_total nella tabella oe.orders.
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR(
SCHEMA_NAME => 'OE',
TABLE_NAME => 'ORDERS');
END;
/
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_DELTA_RES(
SCHEMA_NAME => 'OE',
TABLE_NAME => 'ORDERS',
COLUMN_NAME => 'ORDER_TOTAL');
END;
/
Gestione del rilevamento e della risoluzione automatici dei conflitto
Puoi gestire il rilevamento e la risoluzione automatici dei conflitti di Oracle GoldenGate in Oracle AI Database con il package DBMS_GOLDENGATE_ADM.
Alterazione del rilevamento e della risoluzione di conflitti per una tabella
La procedura ALTER_AUTO_CDR nel pacchetto DBMS_GOLDENGATE_ADM altera il rilevamento e la risoluzione dei conflitti per una tabella.
Il rilevamento e la risoluzione automatici dei conflitti di Oracle GoldenGate devono essere configurati per la tabella:
-
Connettersi al database server in entrata come amministratore di Oracle GoldenGate.
-
Eseguire la procedura
ALTER_AUTO_CDRe specificare la tabella da configurare per il rilevamento e la risoluzione dei conflitti degli indicatori orari più recenti. -
Ripetere tutti i passi precedenti in ogni Oracle AI Database che replica la tabella.
Esempio 9-27 Modifica del rilevamento e della risoluzione dei conflitti per una tabella
Questo esempio altera il rilevamento e la risoluzione dei conflitti per la tabella HR.EMPLOYEES per specificare che i conflitti di eliminazione vengono tracciati in una tabella di pietre tombali.
BEGIN
DBMS_GOLDENGATE_ADM.ALTER_AUTO_CDR(
SCHEMA_NAME => 'HR',
TABLE_NAME => 'EMPLOYEES',
TOMBSTONE_DELETES => TRUE);
END;
/
Modifica di un gruppo di colonne
La procedura ALTER_AUTO_CDR_COLUMN_GROUP modifica un gruppo di colonne.
-
Connettersi al database server in entrata come amministratore di Oracle GoldenGate.
-
Eseguire la procedura
ALTER_AUTO_CDR_COLUMN_GROUPe specificare uno o più gruppi di colonne nella tabella. -
Ripetere tutti i passi precedenti in ogni Oracle AI Database che replica la tabella.
Esempio 9-28 Modifica di un gruppo di colonne
In questo esempio la colonna MANAGER_ID viene rimossa dal gruppo di colonne JOB_IDENTIFIER_CG per la tabella HR.EMPLOYEES.
BEGIN
DBMS_GOLDENGATE_ADM.ALTER_AUTO_CDR_COLUMN_GROUP(
SCHEMA_NAME => 'HR',
TABLE_NAME => 'EMPLOYEES',
COLUMN_GROUP_NAME => 'JOB_IDENTIFIER_CG',
REMOVE_COLUMN_LIST => 'MANAGER_ID');
END;
/
Nota: se sono presenti più colonne, utilizzare un elenco separato da virgole.
Rimozione delle righe di lapide
La procedura PURGE_TOMBSTONES rimuove le righe della lapide che sono state registrate prima di una data e un'ora specificate. Questa procedura rimuove le righe della lapide per tutte le tabelle configurate per la risoluzione dei conflitti nel database.
Potrebbe essere necessario rimuovere periodicamente le file delle lapidi per evitare che il registro delle lapidi cresca troppo grande nel tempo.
-
Connettersi al database server in entrata come amministratore di Oracle GoldenGate.
-
Eseguire la procedura
PURGE_TOMBSTONESe specificare la data e l'ora.
Esempio 9-29 Rimozione di righe di lapide
In questo esempio vengono rimosse tutte le righe delle lapidi registrate prima delle 3:00 del 1° dicembre 2015, ora standard orientale. L'indicatore orario deve essere immesso nel formato TIMESTAMP WITH TIME ZONE.
EXEC DBMS_GOLDENGATE_ADM.PURGE_TOMBSTONES('2015-12-01 15:00:00.000000 EST');
Ridefinizione online su tabelle ACDR
Oracle AI Database consente di limitare l'interazione dell'applicazione durante la riorganizzazione di tabelle o colonne utilizzando il package DBMS_REDEFINITION. Il pacchetto DBMS_REDEFINITION può essere utilizzato per eseguire le attività indicate di seguito.
-
Rimuovere le colonne inutilizzate.
-
Riorganizzazione, riprogettazione delle tablespace e partizionamento.
DBMS_REDFINITION.START_REDEF_TABLE gestisce automaticamente la colonna dell'indicatore orario nascosto nella tabella provvisoria.
Per informazioni dettagliate sul package DBMS_REDFINITION, vedere DBMS_REDEFINITION in Oracle AI Database PL/SQL Packages and Types Reference.
Rimozione del rilevamento e della risoluzione dei conflitti da una tabella
Con Oracle AI Database e versioni successive, la rimozione completa di ACDR (Automatic Conflict Detection and Resolution) dalla tabella ha un impatto minore sulla tabella perché le colonne correlate a AUTO_CDR vengono contrassegnate come UNUSED se AUTO_CDR viene rimosso.
Dopo aver richiamato la procedura REMOVE_AUTO_CDR, le colonne inutilizzate possono essere eliminate manualmente in una finestra di manutenzione. Questa funzione è utile per le tabelle di grandi dimensioni in cui l'operazione ALTER TABLE ... DROP COLUMN fa uso intensivo di risorse.
Se si desidera rimuovere immediatamente tutte le colonne interne di AUTO_CDR quando si chiama la procedura REMOVE_AUTO_CDR, è necessario prima contrassegnare la tabella utilizzando il parametro additional_options REMOVE_HIDDEN_COLUMNS per la procedura ADD_AUTO_CDR o ALTER_AUTO_CDR.
Utilizzare la procedura REMOVE_AUTO_CDR nel pacchetto DBMS_GOLDENGATE_ADM per contrassegnare una tabella come UNUSED, riducendo al minimo il blocco. È possibile scegliere di rilasciare una colonna o conservarla in una fase successiva.
-
Connettersi al database server in entrata come amministratore di Oracle GoldenGate.
-
Eseguire la procedura
REMOVE_AUTO_CDRe specificare la tabella. -
Ripetere tutti i passi precedenti in ogni istanza di Oracle AI Database che replica la tabella.
Esempio 9-30 Rimozione del rilevamento e della risoluzione dei conflitti per una tabella
In questo esempio viene rimosso il rilevamento e la risoluzione dei conflitti per la tabella HR.EMPLOYEES.
BEGIN
DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR(
SCHEMA_NAME => 'HR',
TABLE_NAME => 'EMPLOYEES');
END;
/
È possibile scegliere di eliminare le colonne utilizzando il flag ADD_AUTO_CDR.REMOVE_HIDDEN_COLUMNS come parametro additional_flags nella procedura ADD_AUTO_CDR.
Di seguito è riportato un esempio che è possibile utilizzare per visualizzare le colonne nascoste in una tabella.
La query seguente utilizza il pacchetto DBA_UNUSED_COL_TABS per determinare se nella tabella EMPLOYEES sono presenti colonne non utilizzate.
SELECT OWNER, TABLE_NAME, COUNT
FROM DBA_UNUSED_COL_TABS
WHERE OWNER = 'HR'
AND TABLE_NAME = 'EMPLOYEES'
ORDER BY OWNER, TABLE_NAME;
L'output viene visualizzato come indicato di seguito.
OWNER TABLE_NAME COUNT
-------- ------------ ----------
HR EMPLOYEES 1
La query seguente elenca le colonne nascoste contrassegnate dal sistema quando l'ACDR è stato rimosso per il gruppo di colonne nella tabella EMPLOYEES.
SELECT OWNER, TABLE_NAME, COLUMN_ID, COLUMN_NAME, DATA_TYPE, HIDDEN_COLUMN
FROM DBA_TAB_COLS
WHERE OWNER = 'HR'
AND TABLE_NAME = 'EMPLOYEES'
AND HIDDEN_COLUMN = 'YES' AND USER_GENERATED= 'NO'
ORDER BY OWNER, TABLE_NAME, COLUMN_ID;
L'output viene visualizzato come indicato di seguito.
OWNER TABLE_NAME COLUMN_ID COLUMN_NAME DATA_TYPE HIDDEN_COLUMN
------------ ------------ ---------- ------------- ------------ ---------------
HR EMPLOYEES SYS_C00014_22092220:30:52$ TIMESTAMP(6) YES
Rimozione del gruppo di colonne
Con Oracle AI Database 26ai e versioni successive, la rimozione di ACDR (Automatic Conflict Detection and Resolution) dai gruppi di colonne ha un impatto minore sulla tabella perché le colonne correlate all'ACDR sono contrassegnate come UNUSED. È inoltre possibile scegliere di rilasciare una colonna o conservarla in una fase successiva.
Utilizzare la procedura REMOVE_AUTO_CDR_COLUMN_GROUP nel pacchetto DBMS_GOLDENGATE_ADM per assegnare tag a una tabella, riducendo al minimo il blocco. Vedere l'esempio in Rimozione del rilevamento e della risoluzione dei conflitti da una tabella.
-
Connettersi al database server in entrata come amministratore di Oracle GoldenGate.
-
Eseguire la procedura
REMOVE_AUTO_CDR_COLUMN_GROUPe specificare il nome del gruppo di colonne. -
Ripetere tutti i passi precedenti in ogni Oracle AI Database che replica la tabella.
Esempio 9-31 Rimozione di un gruppo di colonne
In questo esempio il gruppo di colonne COMPENSATION_CG viene rimosso dalla tabella HR.EMPLOYEES.
BEGIN
DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR_COLUMN_GROUP(
SCHEMA_NAME => 'HR',
TABLE_NAME => 'EMPLOYEES',
COLUMN_GROUP_NAME => 'COMPENSATION_CG');
END;
Rimozione e risoluzione del conflitto delta
La procedura REMOVE_AUTO_CDR_DELTA_RES nel pacchetto DBMS_GOLDENGATE_ADM rimuove il rilevamento e la risoluzione dei conflitti delta per una colonna.
Il rilevamento e la risoluzione dei conflitti delta devono essere configurati per la colonna specificata.
-
Connettersi al database server in entrata come amministratore di Oracle GoldenGate.
-
Eseguire la procedura
REMOVE_AUTO_CDR_DELTA_RESe specificare la colonna. -
Ripetere tutti i passi precedenti in ogni Oracle AI Database che replica la tabella.
Esempio 9-32 Rimozione del rilevamento e della risoluzione dei conflitti delta per una tabella
In questo esempio viene rimosso il rilevamento e la risoluzione dei conflitti delta per la colonna ORDER_TOTAL nella tabella OE.ORDERS.
BEGIN
DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR_DELTA_RES(
SCHEMA_NAME => 'OE',
TABLE_NAME => 'ORDERS',
COLUMN_NAME => 'ORDER_TOTAL');
END;
Monitoraggio e risoluzione automatica dei conflitti
È possibile monitorare il rilevamento e la risoluzione automatici dei conflitti di Oracle GoldenGate in un Oracle AI Database eseguendo query sulle viste del dizionario dati.
Visualizzazione delle informazioni sulle tabelle configurate per i conflitti
La vista ALL_GG_AUTO_CDR_TABLES visualizza informazioni sulle tabelle configurate per il rilevamento e la risoluzione automatici dei conflitti di Oracle GoldenGate.
-
connettersi al database;
-
Eseguire una query sulla vista
ALL_GG_AUTO_CDR_TABLES.
Esempio 9-33 Visualizzazione di informazioni sulle tabelle configurate per il rilevamento e la risoluzione dei conflitti
Questa query visualizza le seguenti informazioni sulle tabelle configurate per il rilevamento e la risoluzione dei conflitti:
-
Il proprietario della tabella per ogni tabella.
-
Il nome della tabella per ogni tabella.
-
Tabella tombstone utilizzata per memorizzare le righe eliminate per i conflitti di aggiornamento/eliminazione, se per la tabella è configurata una tabella tombstone.
-
Colonna indicatore orario nascosto utilizzata per la risoluzione dei conflitti per ogni tabella.
COLUMN TABLE_OWNER FORMAT A15
COLUMN TABLE_NAME FORMAT A15
COLUMN TOMBSTONE_TABLE FORMAT A15
COLUMN ROW_RESOLUTION_COLUMN FORMAT A25
SELECT TABLE_OWNER,
TABLE_NAME,
TOMBSTONE_TABLE,
ROW_RESOLUTION_COLUMN
FROM ALL_GG_AUTO_CDR_TABLES
ORDER BY TABLE_OWNER, TABLE_NAME;
L'output è simile al seguente:
TABLE_OWNER TABLE_NAME TOMBSTONE_TABLE ROW_RESOLUTION_COLUMN
--------------- --------------- --------------- -------------------------
HR EMPLOYEES DT$_EMPLOYEES CDRTS$ROW
OE ORDERS DT$_ORDERS CDRTS$ROW
Visualizzazione di informazioni sulle colonne di risoluzione dei conflitti
La vista ALL_GG_AUTO_CDR_COLUMNS visualizza informazioni sulle colonne configurate per il rilevamento e la risoluzione automatici dei conflitti di Oracle GoldenGate.
Le colonne possono essere configurate per il rilevamento e la risoluzione automatici dei conflitti di riga o colonna. Le colonne possono essere configurate per la risoluzione dei conflitti dell'indicatore orario più recente in un gruppo di colonne. Inoltre, è possibile configurare una colonna per la risoluzione dei conflitti delta.
-
Connettersi al database come amministratore di Oracle GoldenGate.
-
Eseguire una query sulla vista
ALL_GG_AUTO_CDR_COLUMNS.
Esempio 9-34 Visualizzazione di informazioni sui gruppi di colonne
Questa query visualizza le seguenti informazioni sulle tabelle configurate per il rilevamento e la risoluzione dei conflitti:
-
Il proprietario della tabella per ogni tabella.
-
Il nome della tabella per ogni tabella.
-
Se la colonna si trova in un gruppo di colonne, il nome del gruppo di colonne.
-
Il nome della colonna.
-
Se la colonna è configurata per la risoluzione dei conflitti dell'indicatore orario più recente, il nome della colonna dell'indicatore orario nascosto per la colonna.
COLUMN TABLE_OWNER FORMAT A10
COLUMN TABLE_NAME FORMAT A10
COLUMN COLUMN_GROUP_NAME FORMAT A17
COLUMN COLUMN_NAME FORMAT A15
COLUMN RESOLUTION_COLUMN FORMAT A23
SELECT TABLE_OWNER,
TABLE_NAME,
COLUMN_GROUP_NAME,
COLUMN_NAME,
RESOLUTION_COLUMN
FROM ALL_GG_AUTO_CDR_COLUMNS
ORDER BY TABLE_OWNER, TABLE_NAME;
L'output è simile al seguente:
TABLE_OWNE TABLE_NAME COLUMN_GROUP_NAME COLUMN_NAME RESOLUTION_COLUMN
---------- ---------- ----------------- --------------- -----------------------
HR EMPLOYEES COMPENSATION_CG COMMISSION_PCT CDRTS$COMPENSATION_CG
HR EMPLOYEES COMPENSATION_CG SALARY CDRTS$COMPENSATION_CG
HR EMPLOYEES JOB_IDENTIFIER_CG MANAGER_ID CDRTS$JOB_IDENTIFIER_CG
HR EMPLOYEES JOB_IDENTIFIER_CG JOB_ID CDRTS$JOB_IDENTIFIER_CG
HR EMPLOYEES JOB_IDENTIFIER_CG DEPARTMENT_ID CDRTS$JOB_IDENTIFIER_CG
HR EMPLOYEES IMPLICIT_COLUMNS$ PHONE_NUMBER CDRTS$ROW
HR EMPLOYEES IMPLICIT_COLUMNS$ LAST_NAME CDRTS$ROW
HR EMPLOYEES IMPLICIT_COLUMNS$ HIRE_DATE CDRTS$ROW
HR EMPLOYEES IMPLICIT_COLUMNS$ FIRST_NAME CDRTS$ROW
HR EMPLOYEES IMPLICIT_COLUMNS$ EMAIL CDRTS$ROW
HR EMPLOYEES IMPLICIT_COLUMNS$ EMPLOYEE_ID CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ ORDER_MODE CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ ORDER_ID CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ ORDER_DATE CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ CUSTOMER_ID CDRTS$ROW
OE ORDERS DELTA$ ORDER_TOTAL
OE ORDERS IMPLICIT_COLUMNS$ PROMOTION_ID CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ ORDER_STATUS CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ SALES_REP_ID CDRTS$ROW
In questo esempio, le colonne con IMPLICIT_COLUMNS$ per il nome del gruppo di colonne sono configurate per il rilevamento e la risoluzione dei conflitti di righe, ma non fanno parte di un gruppo di colonne. Le colonne con DELTA$ per il nome del gruppo di colonne sono configurate per il rilevamento e la risoluzione dei conflitti delta e non dispongono di una colonna di risoluzione.
Visualizzazione di informazioni sui gruppi di colonne
Nella vista ALL_GG_AUTO_CDR_COLUMN_GROUPS vengono visualizzate informazioni sui gruppi di colonne configurati per il rilevamento e la risoluzione automatici dei conflitti di Oracle GoldenGate.
È possibile configurare il rilevamento e la risoluzione automatici dei conflitti di Oracle GoldenGate utilizzando la procedura ADD_AUTO_CDR nel package DBMS_GOLDENGATE_ADM. È possibile configurare i gruppi di colonne utilizzando la procedura ADD_AUTO_CDR_COLUMN_GROUP nel pacchetto DBMS_GOLDENGATE_ADM.
-
Connettersi al database come amministratore di Oracle GoldenGate.
-
Eseguire una query sulla vista
ALL_GG_AUTO_CDR_COLUMN_GROUPS.
Esempio 9-35 Visualizzazione di informazioni sui gruppi di colonne
Questa query visualizza le seguenti informazioni sulle tabelle configurate per il rilevamento e la risoluzione dei conflitti:
-
Il proprietario della tabella.
-
Nome della tabella.
-
Il nome del gruppo di colonne.
-
Colonna indicatore orario nascosto utilizzata per la risoluzione dei conflitti per ogni gruppo di colonne.
COLUMN TABLE_OWNER FORMAT A15
COLUMN TABLE_NAME FORMAT A15
COLUMN COLUMN_GROUP_NAME FORMAT A20
COLUMN RESOLUTION_COLUMN FORMAT A25
SELECT TABLE_OWNER,
TABLE_NAME,
COLUMN_GROUP_NAME,
RESOLUTION_COLUMN
FROM ALL_GG_AUTO_CDR_COLUMN_GROUPS
ORDER BY TABLE_OWNER, TABLE_NAME;
L'output è simile al seguente:
TABLE_OWNER TABLE_NAME COLUMN_GROUP_NAME RESOLUTION_COLUMN
--------------- --------------- -------------------- -------------------------
HR EMPLOYEES COMPENSATION_CG CDRTS$COMPENSATION_CG
HR EMPLOYEES JOB_IDENTIFIER_CG CDRTS$JOB_IDENTIFIER_CG