Prepara impostazioni di connessione, sistema e parametro del database

Informazioni sulla configurazione delle impostazioni di connessione al database, di sistema e di parametri per Oracle GoldenGate for Oracle.

Abilita la modalità di replica e archiviazione GoldenGate

Passo 1: abilitare la replica GoldenGate

I servizi di database necessari per supportare Oracle GoldenGate Extract e Replicat devono essere abilitati in modo esplicito per Oracle AI Database.

Per abilitare la replica di Oracle GoldenGate, impostare il parametro di inizializzazione del database seguente. In tutte le istanze di Oracle RAC questo valore deve essere impostato su TRUE se si utilizza Oracle GoldenGate su uno qualsiasi dei nodi.

ALTER SYSTEM SET enable_goldengate_replication = true SCOPTE=both;

Per ulteriori informazioni su questo parametro, vedere Parametri di inizializzazione.

Passaggio 2: abilitare la modalità di archiviazione

I database Oracle devono essere in modalità ARCHIVELOG in modo che Extract possa elaborare i file di log. Per attivare la modalità ARCHIVELOG, attenersi alla procedura descritta in Modifica della modalità di archiviazione del database.

Impostazione della query di flashback

Per informazioni sui dati recuperati da Oracle GoldenGate, vedere Dettagli del supporto per i tipi di dati e gli oggetti Oracle.

Per impostazione predefinita, Oracle GoldenGate utilizza la query di flashback per recuperare i valori dalle tablespace di undo (rollback). In questo modo, Oracle GoldenGate può ricostruire un'immagine di riga coerente in lettura a partire da un'ora specifica o da un SCN corrispondente al redo record.

Per ottenere risultati ottimali, configurare il database di origine come indicato di seguito.

  1. Impostare una quantità sufficiente di conservazione dei redo impostando i parametri di inizializzazione Oracle UNDO_MANAGEMENT e UNDO_RETENTION come indicato di seguito (in secondi).

    UNDO_MANAGEMENT=AUTO
    
    UNDO_RETENTION=86400
    
    UNDO_RETENTION can be adjusted upward in high-volume environments.
  2. Calcolare lo spazio richiesto nella tablespace di undo utilizzando la formula seguente.

    *undo_space* = UNDO_RETENTION * *UPS* + *overhead*

    Dove:

    • undo_space è il numero di blocchi di undo.

    • UNDO_RETENTION è il valore del parametro UNDO_RETENTION (in secondi).

    • UPS è il numero di blocchi di undo per ogni secondo.

    • overhead è il sovraccarico minimo per i metadati (tabelle delle transazioni e così via).

    Utilizzare la vista di sistema V$UNDOSTAT per stimare UPS e overhead.

  3. Per le tabelle contenenti LOBs, effettuare una delle operazioni riportate di seguito.

    • Impostare la clausola di memorizzazione LOB su RETENTION. Questa è l'impostazione predefinita per le tabelle create quando UNDO_MANAGEMENT è impostato su AUTO.

    • Se si utilizza PCTVERSION anziché RETENTION, impostare PCTVERSION su un valore iniziale pari a 25. È possibile regolarlo in base alle statistiche di recupero segnalate con il comando STATS EXTRACT. Se il valore del campo STAT_OPER_ROWFETCH CURRENTBYROWID o STAT_OPER_ROWFETCH_CURRENTBYKEY in queste statistiche è elevato, aumentare PCTVERSION con incrementi di 10 finché le statistiche non mostrano valori bassi.

Oracle GoldenGate fornisce i parametri riportati di seguito per gestire il recupero.

Parametro o comando Descrizione
Comando STATS EXTRACT con opzione REPORTFETCH Mostra le statistiche di recupero estrazione su richiesta.
Parametro STATOPTIONS con opzione REPORTFETCH Imposta il comando STATS EXTRACT in modo che mostri sempre le statistiche di recupero.
Parametro MAXFETCHSTATEMENTS Controlla il numero di cursori aperti per le query preparate gestite da Extract nel database di origine e anche per le operazioni SQLEXEC.
Parametro MAXFETCHSTATEMENTS Controlla il funzionamento di recupero predefinito di Extract: se Extract esegue una query di flashback o recupera l'immagine corrente dalla tabella.
Parametro FETCHOPTIONS con opzione USELATESTVERSION o NOUSELATESTVERSION Gestisce l'errore di una query di flashback Extract, ad esempio se la conservazione degli undo è scaduta o la struttura di una tabella è stata modificata. Extract può recuperare l'immagine corrente dalla tabella o ignorare l'errore.
Parametro REPFETCHEDCOLOPTIONS Controlla la risposta in base a Replicat quando elabora record trail che includono dati recuperati o condizioni mancanti a livello di colonna.

Gestione di altre proprietà del database

Esistono alcune proprietà del database che possono influire su Oracle GoldenGate e sui parametri utilizzati per risolvere o risolvere determinate condizioni.

Nella tabella seguente sono elencate le proprietà del database e la preoccupazione/risoluzione associata.

Proprietà database Preoccupazioni / risoluzione
Tabella con partizionamento intervallo Per supportare le tabelle con il partizionamento intervallo, assicurarsi che il parametro WILDCARDRESOLVE rimanga nel valore predefinito DYNAMIC.
Tabella con colonne virtuali

Le colonne virtuali non vengono registrate e Oracle non consente DML sulle colonne virtuali. È tuttavia possibile acquisire questi dati e mapparli a una colonna di destinazione che non sia una colonna virtuale effettuando le operazioni riportate di seguito.

Includere la tabella nell'istruzione Extract TABLE e utilizzare l'opzione FETCHCOLS di TABLE per recuperare il valore dalla colonna virtuale nel database.

Nell'istruzione Replicat MAP mappare la colonna virtuale di origine alla colonna di destinazione non virtuale.

Tabella con vista aggiornabile intrinsecamente Per replicare in una vista aggiornabile in modo intrinseco, definire una chiave nelle colonne univoche della vista aggiornabile utilizzando una clausola KEYCOLS nella stessa istruzione MAP in cui vengono mappate le tabelle di origine e di destinazione associate.
Ripeti i log o gli archivi in posizioni diverse Il parametro TRANLOGOPTIONS contiene le opzioni per gestire gli ambienti in cui i redo log o gli archivi vengono memorizzati in una posizione diversa da quella predefinita del database o in una piattaforma diversa da quella in cui Extract è in esecuzione.
operazioni TRUNCATE

Per replicare le operazioni TRUNCATE, scegliere una delle due opzioni riportate di seguito.

  • Il supporto TRUNCATE standalone mediante il parametro GETTRUNCATES replica TRUNCATE TABLE, ma non altre opzioni TRUNCATE. Utilizzare solo se non si utilizza il supporto DDL di Oracle GoldenGate.

  • Il supporto DDL completo replica TRUNCATE TABLE, ALTER TABLE TRUNCATE PARTITION e altri DDL.

Sequenze

Per replicare DDL per le sequenze (CREATE, ALTER, DROP, RENAME), utilizzare il supporto DDL di Oracle GoldenGate.

Per replicare solo i valori di sequenza, utilizzare il parametro SEQUENCE nel file dei parametri Extract. Ciò non richiede l'ambiente di supporto DDL di Oracle GoldenGate.

Configurare un container database multi-tenant

Oracle GoldenGate con Oracle AI Database consente l'implementazione di pluggable database (PDB) per l'origine e la destinazione. Extract è registrato per un PDB specifico, denominato Extract per PDB.

Nota: l'accesso al livello radice con l'utente c##ggadmin non è consigliato, tranne nel caso della configurazione Extract a valle. Utilizzare Extract a livello di PDB anziché Extract a livello radice.

Il diagramma riportato di seguito mostra la configurazione per approcci diversi in una configurazione di container database multi-tenant.

Segue la descrizione di pdb_extract_feedbk.png

L'aggiunta di Extract direttamente dal PDB acquisisce da PDB isolati, gestendo proprietà e responsabilità a livello di PDB.

Utilizzando un'estrazione per PDB, è possibile connettersi come utente PDB locale (ad esempio, ggadmin) e quindi registrare questa estrazione nel database. Poiché è già stato eseguito il login come utente PDB, non è richiesta una clausola container aggiuntiva. Allo stesso modo, non è necessaria anche la convenzione di denominazione SOURCECATALOG o tre parti.

Per impostare un'estrazione, vedere Aggiungere un'estrazione.

Considerazioni per la configurazione del container database multi-tenant

Tenere presenti le linee guida riportate di seguito durante la configurazione di un container database multi-tenant per la replica dei dati mediante Oracle GoldenGate.

Vedere Aggiungi connessioni al database per aggiungere un utente di container database multi-tenant nelle credenziali di Oracle GoldenGate. Vedere Concedi privilegi utente per Oracle Database 21c e versioni precedenti o Concedi privilegi utente per Oracle AI Database 26ai e versioni successive a seconda dell'installazione di Oracle AI Database da configurare.

Sequenza di flush per container database multi-tenant

È possibile utilizzare il comando FLUSH SEQUENCE solo all'interno di Oracle GoldenGate, se lo script sequence.sql applica le procedure del database allo schema di amministrazione GoldenGate del database.

Utilizzare il comando FLUSH SEQUENCE immediatamente dopo aver avviato Extract per la prima volta durante la sincronizzazione iniziale o una nuova sincronizzazione. Questo comando aggiorna una sequenza Oracle in modo che i redo record iniziali siano disponibili quando Extract inizia ad acquisire i dati della transazione. In genere il redo non viene generato finché la cache corrente non viene esaurita. Lo svuotamento fornisce a Replicat un punto di inizio con il quale eseguire la sincronizzazione con il valore di sequenza corretto nel sistema di destinazione. In seguito Extract può utilizzare il redo associato alla consueta prenotazione dei valori di sequenza nella cache. 1. Il comando Oracle utilizza le procedure riportate di seguito da FLUSH SEQUENCE:

 | Database | Procedure | User and Privileges |
 | --- | --- | --- |
 | Source | `updateSequence` | Grants `EXECUTE` to the owner of the Oracle GoldenGate DDL objects, or other selected user if not using DDL support. |
 | Target | `replicateSequence` | Grants `EXECUTE` to the Oracle GoldenGate Replicat user. |

 {: summary="This table lists the Oracle procedures used by FLUSH SEQUENCE. It gives the database, procedure, and user and privileges." }

The `sequence.sql` script installs these procedures. Normally, this script is run as part of the Oracle GoldenGate installation process, but make certain that was done before using `FLUSH SEQUENCE`. If `sequence.sql` was not run, the flush fails and an error message similar to the following is generated:

<pre class="copy"><code>Cannot flush sequence {0}. Refer to the Oracle GoldenGate for Oracle documentation for instructions on how to set up and run the sequence.sql script. Error {1}.</code></pre>
  1. Prima di utilizzare FLUSH SEQUENCE, connettersi al database utilizzando il comando DBLOGIN.

Per creare un utente Oracle GoldenGate in ogni PDB per il quale è richiesta la replica della sequenza, è necessario eseguire il comando FLUSH SEQUENCE a livello di PDB. Usare DBLOGIN per eseguire il login al PDB ed eseguire il comando FLUSH SEQUENCE.

Si consiglia di utilizzare lo stesso schema in ogni PDB, in modo che funzioni con il file di parametri GLOBALS GGSCHEMA.

Nell'esempio riportato di seguito, l'impostazione dell'ambiente è per Oracle 21c to Oracle 21c Replication, con Extract integrato, Replicat parallelo utilizzando Oracle GoldenGate 21c (21.3.0).

Nella tabella seguente sono elencati i nomi del CDB di origine e di destinazione, i PDB e le credenziali utente corrispondenti per la connessione al database.

CDB di origine CDB di destinazione
NORTH SOUTH
Nome PDB: DBEAST Nome PDB: DBWEST

Utente comune: c##ggadmin

Utente PDB per le sequenze: ggate

Utente PDB: ggadmin
sqlplus system/manager
ALTER SESSION SESSION SET CONTAINER=CERTMISSN;
CREATE USER ggate IDENTIFIED BY *password* DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON USERS CONTAINER=CURRENT;

Esegui @sequence.sql

sqlplus system/manager
ALTER SESSION SET CONTAINER=DBEAST;
@sequence.sql

Quando richiesto, immettere quanto segue:

GGADMIN

Eseguire il comando FLUSH SEQUENCE:

DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
FLUSH SEQUENCE DBEAST.HR.*

Configurazione di destinazione di Oracle GoldenGate:

sqlplus system/manager
ALTER SESSION SET CONTAINER =PDBWEST;
@sequence.sql

Quando richiesto, immettere il nome utente PDB ggadmin.

Ciò vale anche per lo script @sequence.sql, che è necessario eseguire anche su ogni PDB da cui si desidera acquisire.