Configura un database Oracle Amazon RDS

Puoi configurare il database Oracle di origine per l'utilizzo con i seguenti metodi CDC:

Per ulteriori informazioni sul lettore di log binari e sull'API LogMiner, consulta Utilizzo dei file di log di ripetizione 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 Amazon RDS per il lettore di log binari

Per le origini Amazon RDS, Datastream supporta solo gli oggetti directory del database come metodo di accesso ai log per il lettore di log binario. Devi creare le directory del database che rimandano ai file di log di ripristino online e ai file di log archiviati. I nomi di queste directory sono statici e non possono essere modificati in un secondo momento. Devi fornire questi nomi a Datastream quando crei lo stream.

  1. Connettiti all'istanza Amazon RDS di origine.

  2. Nel terminale o utilizzando la dashboard di Amazon RDS, esegui i seguenti comandi:

    BEGIN
    rdsadmin.rdsadmin_master_util.create_archivelog_dir;
    END;
    BEGIN
    rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
    END;
    COMMIT;
    GRANT READ ON DIRECTORY ONLINELOG_DIR TO USER_NAME;
    GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO USER_NAME;
  3. Verifica che il database sia in esecuzione in modalità ARCHIVELOG. Per farlo, accedi al database Oracle ed esegui il seguente comando al prompt SQL:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Se il risultato è ARCHIVELOG, vai al passaggio c.
    2. Se il risultato è NOARCHIVELOG, dovrai abilitare la modalità ARCHIVELOG per il tuo database.
    3. I file di log archiviati occupano 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 da utilizzare per i file di recupero del database di destinazione. Impostando questo parametro, puoi gestire il compromesso tra la protezione del database da un eventuale esaurimento dello spazio su disco e l'interruzione dello stream a causa della perdita della posizione del log.
    4. Definisci un criterio di conservazione dei dati per il tuo database eseguendo questo comando:
      exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);
      Ti consigliamo di conservare i backup e i log di archiviazione per un minimo di 4 giorni, ma è consigliabile conservarli per 7 giorni.
    5. Configura il criterio di rotazione dei file di log Oracle. Ti consigliamo di impostare una dimensione massima del file di log su un valore inferiore a 1 GB.
  4. Attiva i dati di log supplementari. Per farlo, abilita prima il logging supplementare minimo a livello di database eseguendo il seguente comando:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');

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

    Per registrare le modifiche solo per tabelle specifiche, esegui il seguente comando 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 la quale vuoi registrare le modifiche.

    Per replicare la maggior parte o tutte le tabelle del database, ti consigliamo di attivare il logging per l'intero database. Alla richiesta di SQL, esegui il comando seguente per abilitare i dati di log supplementari per l'intero database:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL');
  5. Concedi i seguenti privilegi all'utente del database:

    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','USER_NAME','SELECT');
    GRANT SELECT ANY TRANSACTION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;
    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

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

Configura il database Oracle Amazon RDS per LogMiner

  1. Verifica che il database sia in esecuzione in modalità ARCHIVELOG. Per farlo, accedi al database Oracle ed esegui il seguente comando alla richiesta di SQL:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Se il risultato è ARCHIVELOG, vai al passaggio c.
    2. Se il risultato è NOARCHIVELOG, dovrai abilitare la modalità ARCHIVELOG per il tuo database.
    3. I file di log archiviati occupano 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 da utilizzare per i file di recupero del database di destinazione. Impostando questo parametro, puoi gestire il compromesso tra la protezione del database da un eventuale esaurimento dello spazio su disco e l'interruzione dello stream a causa della perdita della posizione del log.
    4. Definisci un criterio di conservazione dei dati per il tuo database eseguendo questo comando:
      exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);
      Ti consigliamo di conservare i backup e i log di archiviazione per un minimo di 4 giorni, ma è consigliabile conservarli per 7 giorni.
    5. Configura il criterio di rotazione dei file di log Oracle. Ti consigliamo di impostare una dimensione massima del file di log su un valore inferiore a 1 GB.
  2. Attiva i dati di log supplementari. Per farlo, abilita prima il logging supplementare minimo a livello di database eseguendo il seguente comando:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');

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

    Per registrare le modifiche solo per tabelle specifiche, esegui il seguente comando 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 la quale vuoi registrare le modifiche.

    Per replicare la maggior parte o tutte le tabelle del database, ti consigliamo di attivare il logging per l'intero database.

    Alla richiesta di SQL, esegui il comando seguente per abilitare dati di log supplementari per l'intero database:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL');
  3. Concedi i privilegi appropriati all'account utente che verrà utilizzato per la connessione al tuo database. Per farlo, esegui il comando seguente:

    GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR','USER_NAME','EXECUTE');
    exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR_D','USER_NAME','EXECUTE');
    GRANT SELECT ANY TRANSACTION TO USER_NAME;
    GRANT SELECT ANY TABLE 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 delle 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;
  4. Concedi all'account utente SELECT l'accesso alla visualizzazione DBA_EXTENTS nel database. Questo privilegio ti consente di utilizzare il backfill basato su ROWID per l'origine Oracle:

    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

Passaggi successivi