Modificare l'acquisizione dei dati dal database Oracle usando il processo di copia (anteprima)

Questa esercitazione descrive come usare Change Data Capture (CDC) nel processo di copia per replicare in modo efficiente le modifiche dei dati da un database Oracle a una destinazione. Oracle CDC sfrutta LogMiner, un'utilità predefinita di Oracle Database che legge i file di log redo online e archiviati per acquisire le modifiche ai dati. In questo modo i dati di destinazione rimangono aggiornati automaticamente.

Prerequisiti

Prima di iniziare, accertati di avere quanto segue:

Requisiti del database Oracle:

  • Un database Oracle (versione 11g o successiva) con accesso alle tabelle di origine.
  • Il database deve essere in esecuzione in modalità ARCHIVELOG . La modalità ARCHIVELOG consente a Oracle di archiviare i file di registro di redo, il che è necessario affinché LogMiner possa accedere alle modifiche storiche.
  • La registrazione supplementare a livello di database deve essere abilitata (registrazione supplementare minima almeno).
  • La registrazione supplementare a livello di tabella deve essere abilitata in ogni tabella da cui si desidera acquisire le modifiche.
  • Un utente del database con i privilegi necessari per accedere a LogMiner e leggere i log di rollforward (vedere Abilitare CDC tramite LogMiner in Oracle per informazioni dettagliate).
  • I log di redo archiviati devono essere conservati per un periodo più lungo rispetto all'intervallo tra le esecuzioni programmate del lavoro di copia per evitare la perdita di dati.

Per altre informazioni su Oracle LogMiner e la registrazione supplementare, vedere la documentazione ufficiale di Oracle:

Requisiti dell'infrastruttura:

  • Un'area di lavoro di Fabric con le autorizzazioni necessarie per creare un job di copia.
  • Archivio dati di destinazione supportato dal processo di copia per la replica CDC.
  • Un gateway dati locale che esegue la versione 3000.310 o successiva, configurato per connettersi al database Oracle.

Suggerimento

Usare il ruolo SYSDBA o DBA in Oracle per eseguire attività amministrative, come abilitare la modalità ARCHIVELOG e concedere privilegi LogMiner. Per le operazioni CDC quotidiane, creare un utente dedicato con solo le autorizzazioni necessarie.

Abilitare CDC tramite LogMiner in Oracle

Oracle usa LogMiner per catturare le modifiche ai dati dai file di log di ripristino. Per abilitare CDC, è necessario configurare la modalità ARCHIVELOG, la registrazione supplementare e le autorizzazioni utente appropriate. Seguire questa procedura per configurare il database Oracle per CDC.

Passaggio 1: Abilitare la modalità ARCHIVELOG

La modalità ARCHIVELOG garantisce che Oracle archivii i file di log di ripristino, che LogMiner richiede per leggere le modifiche cronologiche. Per controllare e abilitare la modalità ARCHIVELOG:

  1. Connettiti al database Oracle in qualità di utente con SYSDBA privilegi.

  2. Controllare la modalità di log dell'archivio corrente:

    SELECT LOG_MODE FROM V$DATABASE;
    

    Se il risultato mostra NOARCHIVELOG, procedere con i passaggi seguenti per abilitarlo.

  3. Arrestare e riavviare il database in modalità di montaggio, quindi abilitare la modalità ARCHIVELOG:

    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ALTER DATABASE ARCHIVELOG;
    ALTER DATABASE OPEN;
    
  4. Verificare che la modalità ARCHIVELOG sia abilitata:

    SELECT LOG_MODE FROM V$DATABASE;
    

    Il risultato dovrebbe mostrare ARCHIVELOG.

Importante

L'abilitazione della modalità ARCHIVELOG richiede un riavvio del database. Pianificare questa modifica durante una finestra di manutenzione per ridurre al minimo l'impatto sull'ambiente di produzione.

Per altre informazioni, vedere Gestione dei file di registro Redo archiviati nella documentazione Oracle.

Passaggio 2: Abilitare la registrazione supplementare

Il logging supplementare include dati di colonna aggiuntivi nei log di redo, necessari per consentire a LogMiner di ricostruire accuratamente le modifiche dei dati.

  1. Abilitare la registrazione supplementare a livello di database minima:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    
  2. Abilitare la registrazione supplementare a livello di tabella in ogni tabella da cui si vogliono acquisire le modifiche. Per ogni tabella, eseguire uno dei comandi seguenti:

    Per registrare tutte le colonne (consigliate per il rilevamento completo delle modifiche):

    ALTER TABLE <schema_name>.<table_name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
    

    Per registrare solo le colonne chiave primaria:

    ALTER TABLE <schema_name>.<table_name> ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
    

    Sostituire <schema_name> e <table_name> con i nomi dello schema e delle tabelle.

    Esempio:

    ALTER TABLE sales.customers ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
    ALTER TABLE sales.orders ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
    
  3. Verificare che la registrazione supplementare sia abilitata a livello di database:

    SELECT SUPPLEMENTAL_LOG_DATA_MIN, SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_ALL
    FROM V$DATABASE;
    

    Verificare che SUPPLEMENTAL_LOG_DATA_MIN mostri YES.

  4. Verificare la registrazione supplementare a livello di tabella:

    SELECT OWNER, TABLE_NAME, LOG_GROUP_NAME, LOG_GROUP_TYPE
    FROM DBA_LOG_GROUPS
    WHERE OWNER = '<schema_name>'
      AND TABLE_NAME = '<table_name>';
    

Per altre informazioni, vedere Registrazione supplementare nella documentazione di Oracle.

Passaggio 3: Creare un utente LogMiner e concedere privilegi

Creare un utente di database dedicato per le operazioni LogMiner CDC e concedere i privilegi necessari:

  1. Creare l'utente:

    CREATE USER <logminer_user> IDENTIFIED BY <password>;
    
  2. Concedere i privilegi necessari:

    GRANT CREATE SESSION TO <logminer_user>;
    GRANT SELECT_CATALOG_ROLE TO <logminer_user>;
    GRANT CONNECT, RESOURCE TO <logminer_user>;
    GRANT EXECUTE_CATALOG_ROLE TO <logminer_user>;
    GRANT FLASHBACK ANY TABLE TO <logminer_user>;
    GRANT SELECT ANY DICTIONARY TO <logminer_user>;
    GRANT SELECT ANY TABLE TO <logminer_user>;
    GRANT LOGMINING TO <logminer_user>;
    

    Sostituire <logminer_user> e <password> con il nome utente e la password desiderati.

    Annotazioni

    Il LOGMINING privilegio è disponibile in Oracle 12c e versioni successive. Per Oracle 11g, assegnare SELECT ANY TRANSACTION anziché.

  3. Concedere l'accesso SELECT alle tabelle di origine:

    GRANT SELECT ON <schema_name>.<table_name> TO <logminer_user>;
    

    Ripetere questo comando per ogni tabella di origine.

  4. Verificare che l'utente che la connessione Oracle usi abbia il FLASHBACK ANY TABLE privilegio . Il processo di copia richiede questo privilegio per acquisire uno snapshot coerente durante il caricamento completo iniziale.

    SELECT GRANTEE, PRIVILEGE
    FROM DBA_SYS_PRIVS
    WHERE PRIVILEGE LIKE 'FLASHBACK%'
    ORDER BY GRANTEE, PRIVILEGE;
    

    La GRANTEE colonna deve includere il nome utente configurato nella connessione Oracle. Se il FLASHBACK ANY TABLE privilegio non è elencato per l'utente, concederlo:

    GRANT FLASHBACK ANY TABLE TO <logminer_user>;
    

Annotazioni

  • LogMiner legge i file di log redo per acquisire le operazioni INSERT, UPDATE e DELETE.
  • La registrazione supplementare a livello di database deve essere abilitata prima della registrazione supplementare a livello di tabella.
  • I log di rollforward archiviati occupano spazio su disco aggiuntivo. Configurare un criterio di conservazione appropriato per bilanciare i costi di archiviazione e i requisiti CDC.
  • Assicuratevi che il periodo di conservazione dei log di redo sia più lungo dell'intervallo di processo di copia pianificato per evitare la perdita di dati delle modifiche.

Per ulteriori informazioni su Oracle LogMiner, consultare la documentazione ufficiale di Oracle - Utilizzo di LogMiner per analizzare i file di redo log.

Creare un processo di copia con Oracle Database CDC

Annotazioni

Completare i passaggi seguenti per creare un nuovo processo di copia per inserire dati dal database Oracle tramite CDC a una destinazione:

  1. Selezionare + Nuovo elemento, scegliere l'icona Copia processo , assegnare un nome al processo di copia e selezionare Crea.

    Screenshot che mostra come navigare alla pagina iniziale di Data Factory e creare una nuova attività di copia.

  2. Scegliere l'archivio dati da cui copiare i dati. In questo esempio scegliere Database Oracle.

  3. Immettere i dettagli di connessione e le credenziali per connettersi al database Oracle. È possibile copiare i dati in modo sicuro all'interno di un ambiente di rete virtuale usando un gateway dati locale.

  4. È necessario avere una chiara visibilità delle tabelle di origine abilitate da CDC. Selezionare le tabelle con CDC attivato per la copia.

    Tabelle con CDC abilitato: Screenshot che mostra l'icona della tabella CDC.

    Tabelle senza CDC abilitato: screenshot che mostra l'assenza dell'icona della tabella CDC.

    Screenshot che mostra dove selezionare le tabelle cdc per il processo copia.

  5. Seleziona il tuo negozio di destinazione. Scegliere una destinazione che supporti operazioni di merge o upsert CDC per una replica CDC ottimizzata.

    Screenshot che mostra dove selezionare l'archivio di destinazione per il processo di copia.

  6. Selezionare Copia incrementale e vedrete che non è necessario inserire alcuna colonna Incrementale per ogni tabella per tenere traccia delle modifiche. Il metodo Update predefinito deve essere impostato su Merge e le colonne chiave necessarie corrispondono alla chiave primaria definita nell'archivio di origine per impostazione predefinita.

    Annotazioni

    Il processo di copia inizialmente esegue un caricamento completo e successivamente effettua copie incrementali durante le esecuzioni successive tramite CDC.

    Screenshot che mostra come selezionare il CDC.

  7. Esaminare il riepilogo del processo, impostare l'opzione di esecuzione su in base alla pianificazione e selezionare Salva + Esegui.

    Annotazioni

    Assicurarsi che il periodo di conservazione dei log di rollforward archiviato di Oracle sia superiore all'intervallo tra le esecuzioni pianificate; in caso contrario, i dati modificati potrebbero essere persi se non elaborati entro il periodo di conservazione.

  8. Il processo di copia viene avviato immediatamente. La prima esecuzione copia uno snapshot completo iniziale.

  9. Aggiornare le tabelle di origine in Oracle inserendo, aggiornando o eliminando righe.

  10. Eseguire di nuovo il processo di copia per acquisire e replicare tutte le modifiche, incluse le righe inserite, aggiornate ed eliminate, nella destinazione.

Passaggi successivi