Configura un database Oracle Amazon RDS

  1. Verifica che il database sia in esecuzione in modalità ARCHIVELOG. Per farlo, accedi al tuo database Oracle ed esegui questo comando al prompt SQL:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Se il risultato è ARCHIVELOG, vai al passaggio c.
    2. Se il risultato è NOARCHIVELOG, devi abilitare la modalità ARCHIVELOG per il 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 dai 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 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 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.

    Al prompt SQL, esegui il seguente comando per abilitare i 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 database di origine è Oracle 12c o successivo, concedi il seguente privilegio aggiuntivo:

    GRANT LOGMINING TO USER_NAME;
  4. Concedi all'account utente SELECT l'accesso alla vista DBA_EXTENTS nel tuo 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