Puoi configurare il tuo database Oracle autonomo in modo che funzioni con i seguenti metodi di 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 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 autonomo per il lettore di log binari
Per configurare il database Oracle autonomo per l'utilizzo con il metodo CDC del Lettore log binario:
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.
- Directory del database: se selezioni questa opzione, devi creare oggetti directory del database che rimandino ai file di log di ripristino e ai file di log archiviati e concedere all'utente del database l'accesso
READ
alle directory:
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 log di reimpostazione online.
- DIRECTORY_NAME_2: il nome della directory per i file log di reintegrazione archiviati.
- ONLINE_REDO_LOGS_PATH: il percorso della directory in cui devono essere archiviati i file log di rifacimento online.
- ARCHIVED_REDO_LOGS_PATH: il percorso della directory in cui devono essere archiviati i file log.
- USER_NAME: il nome dell'utente del database a cui vuoi concedere accesso
READ
.
Se selezioni il metodo di lettura del log binario e utilizzi le directory del database, devi fornire i nomi delle directory dei log redo 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 seguente comando alla richiesta di SQL:
SELECT LOG_MODE FROM V$DATABASE;
- Se il risultato è
ARCHIVELOG
, vai al passaggio successivo. - Se il risultato è
NOARCHIVELOG
, dovrai abilitare la modalitàARCHIVELOG
per il tuo 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 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.
- Se il risultato è
Definisci una policy di 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 è consigliabile conservarli per 7 giorni.
Torna al prompt SQL dello strumento di database che stai utilizzando per configurare il criterio di rotazione dei file di log Oracle. Ti consigliamo di impostare una dimensione massima del file di log non superiore a 512 MB.
Attiva i dati di log supplementari. Per farlo, abilita prima il logging supplementare minimo a livello di database eseguendo il seguente comando:
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 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. Esegui il comando seguente per abilitare i dati di log supplementari per l'intero database:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
Concedi i privilegi appropriati all'account utente che verrà utilizzato per la connessione al tuo database. Per farlo, esegui il comando seguente:
rdsadmin.rdsadmin_util.grant_sys_object('GV_$LOG','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('GV_$LOGFILE','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('GV_$ARCHIVED_LOG','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('GV_$INSTANCE','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('V_$INSTANCE','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('V_$PDBS','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSPORTABLE_PLATFORM','USER_NAME',
'SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('GV_$STANDBY_LOG','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('COL$','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('DBA_TABLESPACES','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('DBA_ENCRYPTED_COLUMNS','USER_NAME','SELECT'); 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 tuo database Oracle autonomo per LogMiner
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;
- Se il risultato è
ARCHIVELOG
, vai al passaggio 2. - Se il risultato è
NOARCHIVELOG
, dovrai abilitare la modalitàARCHIVELOG
per il tuo 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 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.
- Se il risultato è
Definisci una policy di 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 è consigliabile conservarli per 7 giorni.
Torna al prompt SQL dello strumento di database che stai utilizzando per configurare il criterio di rotazione dei file di log Oracle. Ti consigliamo di impostare una dimensione massima del file di log non superiore a 512 MB.
Attiva i dati di log supplementari. Per farlo, abilita prima il logging supplementare minimo a livello di database eseguendo il seguente comando:
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 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. Esegui il comando seguente per abilitare i dati di log supplementari per l'intero database:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
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; GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME; GRANT SELECT ON SYS.V_$ARCHIVED_LOG 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 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.