Configura un database modulare Oracle per CDC

Per trasmettere in streaming gli aggiornamenti di Change Data Capture (CDC) da un database Oracle collegabile a una destinazione supportata come BigQuery o Cloud Storage, puoi connettere il database a Datastream. Ogni database modulare viene eseguito all'interno di un database di container (CDB) multi-tenant. Per preparare l'origine, configura la modalità ARCHIVELOG e la conservazione dei log sul CDB, nonché il logging supplementare e i privilegi utente in entrambi i container.

Puoi configurare il tuo database Oracle collegabile in modo che utilizzi il lettore di log binari (anteprima) o il metodo CDC dell'API LogMiner. Per ulteriori informazioni su questi metodi, consulta Utilizza i file di redo log del database Oracle.

Configura il database Oracle modulare per il lettore di log binari

Per configurare il database Oracle modulare per l'utilizzo con il metodo CDC del lettore di log binari, segui questi passaggi:

  1. 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 directory del database che puntano ai file di redo log e ai file di log archiviati e concedere l'accesso READ alle 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 log di ripetizione 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'utente del database a cui vuoi concedere l'accesso READ.

    Se selezioni il metodo di lettura dei 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.

  2. Verifica che il tuo database sia in esecuzione in modalità ARCHIVELOG.

    Per farlo, accedi al tuo database Oracle ed esegui il comando seguente al prompt SQL:

    SELECT LOG_MODE FROM V$DATABASE;
    
    1. Se il risultato è ARCHIVELOG, vai al passaggio successivo.
    2. Se il risultato è NOARCHIVELOG, dovrai attivare la modalità ARCHIVELOG per il tuo database.
    3. Esegui i seguenti comandi dopo aver eseguito l'accesso come SYSDBA:

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. I file di log archiviati consumano spazio su disco, quindi ti consigliamo di configurare il parametro DB_RECOVERY_FILE_DEST_SIZE per il tuo database. Utilizza questo parametro per specificare (in byte) il limite massimo dello spazio totale che deve essere utilizzato dai file di recupero 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.

  3. 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, anche se il periodo consigliato è di 7 giorni.

  4. Torna al prompt SQL dello strumento di database che utilizzi per configurare la policy di rotazione dei file di log di Oracle. Ti consigliamo di impostare una dimensione massima del file di log non superiore a 512 MB.

  5. Attiva i dati di log supplementari. Per farlo, attiva innanzitutto il logging supplementare minimo a livello di database eseguendo questo comando:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    Poi, scegli se attivare il logging per tabelle specifiche o per l'intero database.

    Per registrare le modifiche solo per tabelle specifiche, esegui questo comando per ogni tabella che vuoi 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 questo comando per abilitare i dati di log supplementari per l'intero database:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
  6. Concedi i privilegi appropriati all'account utente che verrà utilizzato per la connessione al tuo database collegabile. 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 SELECT ON DBA_SUPPLEMENTAL_LOGGING TO USER_NAME;
    
    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;
    GRANT READ ON DIRECTORY ONLINELOG_DIR TO USER_NAME;
    GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO USER_NAME;

    Sostituisci USER_NAME con il nome dell'account utente che intendi utilizzare per connetterti al tuo database.

Configura il database Oracle modulare per LogMiner

Per configurare un database modulare Oracle in hosting autonomo in modo da poterlo utilizzare con l'API LogMiner, segui questi passaggi:

  1. Verifica che il tuo database sia in esecuzione in modalità ARCHIVELOG. Per farlo, esegui questo comando dal container CDB$ROOT:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Se il risultato è ARCHIVELOG, vai al passaggio 2.
    2. Se il risultato è NOARCHIVELOG, devi attivare la modalità ARCHIVELOG per il tuo database.
    3. Esegui i seguenti comandi dopo aver eseguito l'accesso come SYSDBA:

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
      
    4. I file di log archiviati consumano spazio su disco, quindi ti consigliamo di configurare il parametro DB_RECOVERY_FILE_DEST_SIZE per il tuo database. Utilizza questo parametro per specificare (in byte) il limite massimo dello spazio totale che deve essere utilizzato dai file di recupero 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.

  2. Definisci una policy sulla conservazione dei dati per il tuo database eseguendo il seguente comando Oracle Recovery Manager (RMAN) dal container CDB$ROOT:

    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
    

    Il comando definisce la policy sulla conservazione dei dati per tutti i database collegabili nel database del container.

    Ti consigliamo di conservare i backup e i log di archiviazione per almeno 4 giorni, anche se il periodo consigliato è di 7 giorni.

  3. Torna al prompt SQL dello strumento di database che utilizzi per configurare la policy di rotazione dei file di log di Oracle. Ti consigliamo di impostare una dimensione massima del file di log non superiore a 512 MB.

  4. Attiva i dati di log supplementari. Per farlo, attiva innanzitutto il logging supplementare nel database a livello di container CDB$ROOT eseguendo questo comando:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    

    Successivamente, scegli se attivare il logging per tabelle specifiche o per l'intero database collegabile.

    Per registrare le modifiche solo per tabelle specifiche, connettiti al container del database collegabile ed esegui il comando seguente per ogni tabella che vuoi 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 più tabelle o tutte le tabelle del database, ti consigliamo di attivare il logging per l'intero database.

    Esegui questo comando per attivare i dati di log supplementari per l'intero database:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
    
  5. Crea un utente comune. Un utente comune ha la stessa identità nel container CDB$ROOT e nei database collegabili. Un utente comune può connettersi ed eseguire operazioni all'interno del container CDB$ROOT e di qualsiasi database collegabile in cui dispone di privilegi. Il nome utente comune deve iniziare con C## o c##.

  6. Concedi i privilegi appropriati all'utente comune che verrà utilizzato per la connessione al tuo database. Sono necessarie autorizzazioni diverse a livello di container CDB$ROOT e di database collegabile.

    • Connettiti al container CDB$ROOT ed esegui i seguenti comandi:
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SET CONTAINER TO USER_NAME;
    GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME;
    GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO USER_NAME;
    GRANT EXECUTE ON DBMS_LOGMNR TO USER_NAME;
    GRANT EXECUTE ON DBMS_LOGMNR_D TO USER_NAME;
    GRANT LOGMINING TO USER_NAME;
    GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    
    • Connettiti al database modulare ed esegui questi comandi:
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SET CONTAINER TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;
    GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME;
    GRANT SELECT ON V_$PDBS 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 DBA_SUPPLEMENTAL_LOGGING TO USER_NAME;
    GRANT SELECT ON SYS.V_$PARAMETER TO USER_NAME;
    
  7. Concedi all'utente comune SELECT l'accesso alla vista DBA_EXTENTS nel tuo database. Questo privilegio ti consente di utilizzare il ROWID backfill basato su per la tua origine Oracle:

    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
  8. Se il database utilizza la crittografia TDE (Transparent Data Encryption), concedi le seguenti autorizzazioni:

    GRANT SELECT ON DBA_TABLESPACES TO USER_NAME;
    GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO USER_NAME;

Passaggi successivi