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;
- Se il risultato è
ARCHIVELOG
, vai al passaggio c. - Se il risultato è
NOARCHIVELOG
, dovrai abilitare la modalitàARCHIVELOG
per il tuo database. - 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.
- Definisci un criterio di conservazione dei dati per il tuo database eseguendo questo comando:
Ti consigliamo di conservare i backup e i log di archiviazione per un minimo di 4 giorni, ma è consigliabile conservarli per 7 giorni.exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);
- 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.
- Se il risultato è
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.
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');
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;
Concedi all'account utente
SELECT
l'accesso alla visualizzazioneDBA_EXTENTS
nel database. Questo privilegio ti consente di utilizzare il backfill basato suROWID
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.