Questa pagina descrive come configurare Change Data Capture (CDC) per trasmettere dati da un database Oracle autogestito a una destinazione supportata, come BigQuery o Cloud Storage.
Puoi configurare il database Oracle autogestito in modo che funzioni con i seguenti metodi CDC:
Questi metodi specificano in che modo Datastream accede ai file di log. Per ulteriori informazioni sul lettore di log binari e sull'API LogMiner, consulta la pagina relativa all'utilizzo dei file di redo log del database Oracle.
Per istruzioni dettagliate su come configurare il database Oracle di origine per ciascuno di questi metodi, consulta le sezioni seguenti.
Configura il database Oracle autogestito per il lettore di log binari
Per configurare il database Oracle autogestito per l'utilizzo con il metodo CDC del lettore di log binari:
Crea un account utente del database da utilizzare da Datastream per connetterti al database:
CREATE USER USER_NAME IDENTIFIED BY USER_PASSWORD;
Sostituisci quanto segue:
- USER_NAME: il nome dell'account utente del database che vuoi utilizzare per connetterti al database.
- USER_PASSWORD: la password per l'account utente del database.
Seleziona uno dei seguenti metodi per accedere ai file di log:
Automatic Storage Management (ASM): se selezioni questa opzione, devi creare una connessione ASM dedicata e fornire i relativi dettagli quando crei il profilo di connessione. L'account utente utilizzato per la connessione ASM deve avere il privilegio
SYSASM.Per creare un nuovo utente ASM con il privilegio
SYSASM, esegui questi comandi:CREATE USER ASM_USER_NAME IDENTIFIED BY ASM_PASSWORD; GRANT SYSASM TO ASM_USER_NAME;
Sostituisci quanto segue:
- ASM_USER_NAME: il nome dell'utente ASM.
- ASM_PASSWORD: la password per l'utente ASM.
Directory del database: se selezioni questa opzione, devi creare oggetti della directory del database che puntano ai file di redo log e ai file di log archiviati, e concedere l'accesso
READalle directory all'utente del database:
CREATE DIRECTORY DIRECTORY_NAME_1 as 'ONLINE_REDO_LOGS_PATH'; CREATE DIRECTORY DIRECTORY_NAME_2 as 'ARCHIVED_REDO_LOGS_PATH'; GRANT READ ON DIRECTORY DIRECTORY_NAME_1 to USER_NAME; GRANT READ ON DIRECTORY DIRECTORY_NAME_2 to USER_NAME;
Sostituisci quanto segue:
- DIRECTORY_NAME_1: il nome della directory per i file di redo log online.
- DIRECTORY_NAME_2: il nome della directory per i file di redo log archiviati.
- ONLINE_REDO_LOGS_PATH: il percorso della directory in cui devono essere archiviati i file di redo log online.
- ARCHIVED_REDO_LOGS_PATH: il percorso della directory in cui devono essere archiviati i file di log archiviati.
- USER_NAME: il nome dell'account utente del database creato in precedenza.
Se selezioni il metodo del lettore di log binari e utilizzi le directory del database, devi fornire i nomi delle directory dei redo log e dei log archiviati quando crei lo stream.
Verifica che il database sia in esecuzione in modalità
ARCHIVELOG.Per farlo, accedi al database Oracle ed esegui il comando seguente alla richiesta di SQL:
SELECT LOG_MODE FROM V$DATABASE;- Se il risultato è
ARCHIVELOG, vai al passaggio successivo. - Se il risultato è
NOARCHIVELOG, devi abilitare la modalitàARCHIVELOGper il database. Esegui i seguenti comandi dopo aver eseguito l'accesso come
SYSDBA:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
I file di log archiviati consumano spazio su disco, quindi ti consigliiamo di configurare il parametro DB_RECOVERY_FILE_DEST_SIZE per il database. Utilizza questo parametro per specificare (in byte) il limite massimo dello spazio totale da utilizzare per i file di ripristino del database di destinazione. Impostando questo parametro, puoi gestire il compromesso tra la protezione del database dall'esaurimento dello spazio su disco e l'errore dello stream a causa della perdita della posizione del log.
- Se il risultato è
Definisci una policy sulla conservazione dei dati per il tuo database eseguendo questi comandi Oracle Recovery Manager (RMAN):
TARGET / CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
Ti consigliamo di conservare i backup e i log di archiviazione per almeno 4 giorni, ma 7 giorni è il tempo raccomandato.
Torna alla richiesta di SQL dello strumento di database che stai utilizzando per configurare la policy di rotazione dei file di log Oracle. Ti consigliamo di impostare una dimensione massima dei file di log non superiore a 512 MB.
Abilita i dati di log supplementari. Per farlo, devi prima abilitare il logging supplementare minimo a livello di database eseguendo il comando seguente:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Quindi, scegli se attivare il logging per tabelle specifiche o per l'intero database.
Per registrare le modifiche solo per tabelle specifiche, esegui il comando seguente per ogni tabella da replicare:
ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
Sostituisci quanto segue:
- SCHEMA: il nome dello schema che contiene la tabella.
- TABLE: il nome della tabella per cui vuoi registrare le modifiche.
Per replicare la maggior parte o tutte le tabelle del database, valuta la possibilità di attivare il logging per l'intero database. Esegui il comando seguente per abilitare dati di log supplementari per l'intero database:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
Concedi i privilegi appropriati direttamente all'account utente utilizzato per la connessione al database. Tieni presente che queste concessioni non funzionano se assegnate a un ruolo, ad esempio. Per farlo, esegui il comando seguente:
GRANT SELECT ON GV_$LOG TO USER_NAME; GRANT SELECT ON GV_$LOGFILE TO USER_NAME; GRANT SELECT ON GV_$ARCHIVED_LOG TO USER_NAME; GRANT SELECT ON GV_$INSTANCE TO USER_NAME; GRANT SELECT ON GV_$STANDBY_LOG TO USER_NAME; GRANT SELECT ON V_$INSTANCE TO USER_NAME; GRANT SELECT ON V_$PDBS TO USER_NAME; GRANT SELECT ON V_$TRANSPORTABLE_PLATFORM TO USER_NAME; GRANT SELECT ON V_$DATABASE TO USER_NAME; GRANT SELECT ON V_$PARAMETER TO USER_NAME; GRANT SELECT ON COL$ TO USER_NAME; GRANT SELECT ON DBA_OBJECTS TO USER_NAME; GRANT SELECT ON DBA_TABLESPACES TO USER_NAME; GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO USER_NAME; GRANT SELECT ON DBA_EXTENTS TO USER_NAME; GRANT CONNECT TO USER_NAME; GRANT CREATE SESSION TO USER_NAME; GRANT SELECT ANY TABLE TO USER_NAME;
Sostituisci USER_NAME con il nome dell'account utente del database creato in precedenza.
Configura il database Oracle autogestito per LogMiner
Crea un account utente del database da utilizzare da Datastream per connetterti al database:
CREATE USER USER_NAME IDENTIFIED BY USER_PASSWORD;
Sostituisci quanto segue:
- USER_NAME: il nome dell'account utente del database che vuoi utilizzare per connetterti al database.
- USER_PASSWORD: la password per l'account utente del database.
Verifica che il database sia in esecuzione in modalità
ARCHIVELOG.Per farlo, accedi al database Oracle ed esegui il comando seguente alla richiesta di SQL:
SELECT LOG_MODE FROM V$DATABASE;- Se il risultato è
ARCHIVELOG, vai al passaggio successivo. - Se il risultato è
NOARCHIVELOG, devi abilitare la modalitàARCHIVELOGper il database. Esegui i seguenti comandi dopo aver eseguito l'accesso come
SYSDBA:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
I file di log archiviati consumano spazio su disco, quindi ti consigliiamo di configurare il parametro DB_RECOVERY_FILE_DEST_SIZE per il database. Utilizza questo parametro per specificare (in byte) il limite massimo dello spazio totale da utilizzare per i file di ripristino del database di destinazione. Impostando questo parametro, puoi gestire il compromesso tra la protezione del database dall'esaurimento dello spazio su disco e l'errore dello stream a causa della perdita della posizione del log.
- Se il risultato è
Definisci una policy sulla conservazione dei dati per il tuo database eseguendo questi comandi Oracle Recovery Manager (RMAN):
TARGET / CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
Ti consigliamo di conservare i backup e i log di archiviazione per almeno 4 giorni, ma 7 giorni è il tempo raccomandato.
Torna alla richiesta di SQL dello strumento di database che stai utilizzando per configurare la policy di rotazione dei file di log Oracle. Ti consigliamo di impostare una dimensione massima dei file di log non superiore a 512 MB.
Abilita i dati di log supplementari. Per farlo, devi prima abilitare il logging supplementare minimo a livello di database eseguendo il comando seguente:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Quindi, scegli se attivare il logging per tabelle specifiche o per l'intero database.
Per registrare le modifiche solo per tabelle specifiche, esegui il comando seguente per ogni tabella da replicare:
ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
Sostituisci quanto segue:
- SCHEMA: il nome dello schema che contiene la tabella.
- TABLE: il nome della tabella per cui vuoi registrare le modifiche.
Per replicare la maggior parte o tutte le tabelle del database, valuta la possibilità di attivare il logging per l'intero database. Esegui il comando seguente per abilitare dati di log supplementari per l'intero database:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
Concedi i privilegi appropriati direttamente all'account utente utilizzato per la connessione al database. Tieni presente che queste concessioni non funzionano se assegnate a un ruolo, ad esempio. Per farlo, esegui il comando seguente:
GRANT EXECUTE_CATALOG_ROLE TO USER_NAME; GRANT CONNECT TO USER_NAME; GRANT CREATE SESSION TO USER_NAME; GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME; GRANT SELECT ON SYS.V_$LOG TO USER_NAME; -- for primary databases GRANT SELECT ON SYS.V_$STANDBY_LOG TO USER_NAME; -- for standby databases GRANT SELECT ON SYS.V_$LOGFILE TO USER_NAME; GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO USER_NAME; GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO USER_NAME; GRANT SELECT ON SYS.V_$PARAMETER TO USER_NAME; GRANT EXECUTE ON DBMS_LOGMNR TO USER_NAME; GRANT EXECUTE ON DBMS_LOGMNR_D TO USER_NAME; GRANT SELECT ANY TRANSACTION TO USER_NAME; GRANT SELECT ANY TABLE TO USER_NAME;
Se il database utilizza Transparent Data Encryption (TDE), concedi le seguenti autorizzazioni:
GRANT SELECT ON DBA_TABLESPACES TO USER_NAME; GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO USER_NAME;
Se la tua organizzazione non consente di concedere l'autorizzazione
GRANT SELECT ANY TABLE, utilizza la soluzione descritta nella sezione Change Data Capture (CDC) di Oracle della pagina Domande frequenti di Datastream.Se il tuo database di origine è Oracle 12c o successivo dovrai concedere il privilegio aggiuntivo seguente:
GRANT LOGMINING TO USER_NAME;
Concedi all'account utente l'accesso
SELECTalla visualizzazioneDBA_EXTENTSnel database. Questo privilegio ti consente di utilizzare ilROWIDbased backfill per l'origine Oracle:GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
Passaggi successivi
- Scopri di più su come funziona Datastream con le origini Oracle.