Configurazione del database Oracle di origine

Panoramica

Database Migration Service supporta migrazioni continue dai database di origine ai database Cloud SQL per PostgreSQL di destinazione.

I database di origine supportati per Oracle includono le versioni:

  • Oracle 11g, versione 11.2.0.4
  • Oracle 12c, versione 12.1.0.2
  • Oracle 12c, versione 12.2.0.1
  • Oracle 18c
  • Oracle 19c
  • Oracle 21c
  • Oracle Real Application Clusters (RAC)

Database Migration Service sfrutta l'API Oracle LogMiner, che fa parte di Oracle Database, per eseguire query sui file di log di ripetizione archiviati. I file di log di ripristino contengono informazioni sulla storia dell'attività in un database. Per ulteriori informazioni su come funziona Database Migration Service con questi file di log, consulta la pagina Informazioni sul flusso di dati per le migrazioni di Oracle.

Configurazione del database Oracle di origine

Prima di poter utilizzare Database Migration Service per estrarre i dati dal database Oracle di origine, devi configurare il database:

  • Configurazione della registrazione degli archivi per monitorare le modifiche nel database, ad esempio le operazioni INSERT, UPDATE, DELETE e RENAME.

  • Concedi i privilegi appropriati all'account utente che verrà utilizzato per collegarti al tuo database e accedere agli oggetti schema e codice.

    Per impostazione predefinita, Database Migration Service tenta di accedere a tutte le definizioni degli oggetti tramite DBA_VIEWS. L'accesso a DBA_VIEWS viene concesso con il privilegio SELECT ANY DICTIONARY. Se le visualizzazioni DBA non sono accessibili all'account utente di migrazione, Database Migration Service ricorre a ALL_VIEWS. Questo approccio offre il massimo grado di flessibilità per quanto riguarda la definizione di un modello di sicurezza che soddisfi al meglio le tue esigenze.

    Se vuoi che Database Migration Service acceda solo a un determinato sottoinsieme delle definizioni degli oggetti, concedi all'utente di migrazione un ruolo con una configurazione dei privilegi più granulare anziché SELECT ANY DICTIONARY.

  • Definisci un criterio di conservazione dei dati per il tuo database per determinare quali dati verranno archiviati, per quanto tempo verranno conservati e se al termine del periodo di conservazione i dati devono essere archiviati o distrutti.

Database Migration Service attualmente funziona con i seguenti tipi di database Oracle:

Configura un database Amazon RDS per Oracle

  1. Verifica che il database sia in esecuzione in modalità ARCHIVELOG. Per farlo, esegui il seguente comando:

    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 disponibilità delle informazioni e lo spazio su disco.

    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 almeno 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 non superiore a 512 MB. Per ulteriori informazioni sulla gestione della rotazione dei log, consulta Utilizzare i file di log di ripetizione del database Oracle.

  2. Attiva i dati di log supplementari. Per farlo, abilita prima il logging supplementare nel 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 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;
    GRANT SELECT ANY DICTIONARY TO USER_NAME;
    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

    Se il tuo database di origine è Oracle 12c o successivo, dovrai concedere il privilegio aggiuntivo seguente:

    GRANT LOGMINING TO USER_NAME;

Configurare un database Oracle autonomo

  1. Verifica che il database sia in esecuzione in modalità ARCHIVELOG. Per farlo, esegui il seguente comando:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Se il risultato è ARCHIVELOG, vai al passaggio 2.

    2. Se il risultato è NOARCHIVELOG, dovrai abilitare la modalità ARCHIVELOG per il tuo database.

    3. Esegui i seguenti comandi dopo aver eseguito l'accesso come SYSDBA:

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. 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 disponibilità delle informazioni e lo spazio su disco.

  2. Definisci un criterio di conservazione dei dati per il tuo database eseguendo il seguente comando Oracle Recovery Manager (RMAN):

    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.

  3. 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.

  4. Attiva i dati di log supplementari. Per farlo, abilita prima il logging supplementare nel 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;
  5. Concedi i privilegi appropriati all'account utente che verrà utilizzato per la connessione al tuo database. Per farlo, esegui il comando seguente:

    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 SELECT ON SYS.V_$LOGMNR_LOGS 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;
    GRANT SELECT ANY DICTIONARY TO USER_NAME;
    GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

    Se il tuo database di origine è Oracle 12c o successivo, dovrai concedere il privilegio aggiuntivo seguente:

    GRANT LOGMINING TO USER_NAME;

Configurare un database Oracle pluggable autonomo

Database Migration Service supporta l'architettura multi-tenant Oracle, in cui un singolo database contenitore (CDB) contiene uno o più database modulari (PDB). Ogni database pluggable è un database autonomo con un ID e un nome univoci e può essere gestito in modo indipendente.

Per configurare un database pluggable Oracle self-hosted in modo da poterlo utilizzare con Database Migration Service:

  1. Verifica che il database sia in esecuzione in modalità ARCHIVELOG. Per farlo, esegui il comando seguente dal contenitore CDB$ROOT:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Se il risultato è ARCHIVELOG, vai al passaggio 2.

    2. Se il risultato è NOARCHIVELOG, dovrai abilitare la modalità ARCHIVELOG per il tuo database.

    3. Esegui i seguenti comandi dopo aver eseguito l'accesso come SYSDBA:

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. 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 disponibilità delle informazioni e lo spazio su disco.

  2. Definisci un criterio di conservazione dei dati per il tuo database eseguendo il seguente comando Oracle Recovery Manager (RMAN) dal contenitore CDB$ROOT:

    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.

  3. 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.

  4. Attiva i dati di log supplementari. Per farlo, abilita prima il logging supplementare nel database a livello di CDB$ROOT eseguendo il seguente comando:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

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

    Per registrare le modifiche solo per tabelle specifiche, connettiti al contenitore del database pluggable ed 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;
  5. Crea un utente comune. Un utente comune ha la stessa identità nel contenitore CDB$ROOT e nei database collegabili. Un utente comune può connettersi ed eseguire operazioni all'interno del database principale e di qualsiasi database pluggable in cui dispone di privilegi. Il nome utente comune deve iniziare con C## o c##.

  6. Concedi i privilegi appropriati all'utente comune che verrà utilizzato per la connessione al tuo database. Sono necessarie autorizzazioni diverse a livello di contenitore CDB$ROOT e database collegabile.

    • Connettiti al contenitore CDB$ROOT ed esegui i seguenti comandi:

      GRANT CREATE SESSION TO USER_NAME;
      GRANT SET CONTAINER TO USER_NAME;
      GRANT SELECT ON SYS.V_$DATABASE 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 LOGMINING TO USER_NAME;
      GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    • Connettiti al database collegabile ed esegui i seguenti comandi:

      GRANT CREATE SESSION TO USER_NAME;
      GRANT SET CONTAINER TO USER_NAME;
      GRANT SELECT ANY TABLE TO USER_NAME;
      GRANT SELECT ANY DICTIONARY 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 DBA_SUPPLEMENTAL_LOGGING TO USER_NAME;
      GRANT SELECT ON DBA_EXTENTS TO USER_NAME;