Configura un database Oracle collegabile

Datastream supporta l'architettura multi-tenant Oracle, in cui un singolo database container (CDB) contiene uno o più database collegabili (PDB). Ogni database modulare è un database autonomo con ID e nome univoci che può essere gestito in modo indipendente.

Per configurare un database modulare Oracle self-hosted in modo da poterlo utilizzare con Datastream, segui questi passaggi:

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

    SELECT LOG_MODE FROM V$DATABASE;

    1. Se il risultato è ARCHIVELOG, vai al passaggio 2.
    2. Se il risultato è NOARCHIVELOG, devi abilitare la modalità ARCHIVELOG per il database.
    3. Esegui questi 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 per configurare il parametro DB_RECOVERY_FILE_DEST_SIZE è necessario configurare il parametro DB_RECOVERY_FILE_DEST_SIZE per il database. Utilizza questo parametro per specificare (in byte) il limite rigido relativo allo spazio totale utilizzato dai file di recupero del database di destinazione. Impostando questo parametro, è possibile gestire il compromesso tra la protezione del database dall'esaurimento dello spazio su disco e l'errore del flusso a causa della perdita della posizione di log.

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

    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
    

    Il comando definisce il criterio di conservazione dei dati per tutti i database collegabili nel database del container.

    Ti consigliamo di conservare i backup e i log di archiviazione per almeno 4 giorni (quelli consigliati sono 7).

  3. Torna al prompt SQL dello strumento di database che stai utilizzando per configurare il criterio di rotazione del 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 sul database a livello di container CDB$ROOT eseguendo questo comando:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    

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

    Per registrare le modifiche solo per tabelle specifiche, connettiti al container del database modulare ed esegui questo 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 cui vuoi registrare le modifiche.

    Per replicare più tabelle o tutte le tabelle nel database, valuta la possibilità di attivare il logging per l'intero database.

    Esegui questo comando per abilitare 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 container CDB$ROOT e nei database collegabili. Un utente comune può connettersi ed eseguire operazioni all'interno del container CDB$ROOT e all'interno di qualsiasi database collegabile in cui dispone di privilegi. Il nome utente comune deve iniziare con C## o c##.

  6. Concedi all'utente comune i privilegi appropriati che verranno utilizzati per connettersi al tuo database. Sono necessarie autorizzazioni diverse a livello di container CDB$ROOT e di database collegabile.

    • Connettiti al container CDB$ROOT ed esegui questi 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 modulare ed esegui questi comandi:
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SET CONTAINER TO USER_NAME;
    GRANT SELECT ANY TABLE 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;
    
  7. Concedi all'utente comune 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;