Eseguire la migrazione di Oracle Database a OCI mediante M5 Cross-Endian XTTS con i backup incrementali RMAN

Introduzione

Questa esercitazione descrive come eseguire la migrazione di un Oracle Database a Oracle Cloud Infrastructure (OCI) utilizzando M5 Cross Endian Platform Migration con Full Transportable Data Pump e backup incrementali RMAN.

Questo metodo consente la migrazione tra sistemi con diversi formati endian, riducendo al minimo i tempi di inattività delle applicazioni.

Il processo inizia con una copia di backup completa dall'origine alla destinazione. Quindi, vengono applicati backup incrementali per mantenere la destinazione quasi sincronizzata con l'origine. Il tempo di inattività è necessario solo durante il backup incrementale finale e l'esportazione/importazione dei metadati.

Dettagli ambiente

Obiettivi

Prerequisiti

Task 1: Preparazione del database di origine

  1. Eseguire la query seguente per controllare il formato ENDIAN nel database di origine.

    col PLATFORM_NAME for a50
    select platform_name, platform_id, endian_format from v$transportable_platform;
    
  2. Identificare le tablespace nel database di origine che verranno trasportate. Eseguire la query seguente se si esegue la migrazione di tutte le tablespace.

    select tablespace_name from dba_tablespaces where contents='PERMANENT' and tablespace_name not in ('SYSTEM','SYSAUX');
    
  3. Controllare le violazioni del set di trasporto:

    exec dbms_tts.transport_set_check('<comma-separated tablespace list>');
    SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS;
    
  4. (Facoltativo) Abilitare il tracciamento delle modifiche a blocchi nel database di origine per migliorare le prestazioni dei backup incrementali.

  5. Verificare che tutte le tablespace siano in linea nel database di origine.

Task 2: Preparazione del database di destinazione

  1. Creare una nuova tablespace utenti.

    select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME='USERS_OCI';
    select TABLESPACE_NAME from dba_tablespaces order by 1;
    set long 99999
    SELECT DBMS_METADATA.GET_DDL ('TABLESPACE','USERS') from dual;
    

    Utilizzare l'output DDL (Data Definition Language) sopra riportato e sostituire il nome del gruppo di dischi come indicato di seguito e creare una tablespace di nuovi utenti.

    CREATE BIGFILE TABLESPACE USERS_OCI DATAFILE '+DATAC2'
    SIZE 1073741824
    AUTOEXTEND ON NEXT 17179869184 MAXSIZE 33554431M
    LOGGING ONLINE PERMANENT BLOCKSIZE 8192
    EXTENT MANAGEMENT LOCAL AUTOALLOCATE
    ENCRYPTION USING 'AES256' ENCRYPT DEFAULT
    NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO;
    

    Assegnare la tablespace dei nuovi utenti USERS_OCI a tutti gli utenti del database con tablespace predefinita USERS utilizzando la query seguente.

    select 'alter user '||username||' default tablespace USERS_OCI;' from dba_users where default_tablespace='USERS';
    

    L'output della query di selezione precedente deve restituire 0 dopo la riassegnazione della tablespace di nuovi utenti.

    select count(*) from dba_users where default_tablespace='USERS';
    ALTER DATABASE DEFAULT TABLESPACE USERS_OCI;
    drop tablespace users including contents and datafiles;
    select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME='USERS';
    
  2. Creare tablespace temporanee nel database di destinazione. Eseguire la query seguente sull'origine e raccogliere i dettagli della tablespace.

    Eseguire la query seguente nell'origine:

    select TABLESPACE_NAME from dba_tablespaces where CONTENTS='TEMPORARY';
    

    Creare quindi tablespace temporanee nel database di destinazione. Ad esempio:

    create bigfile temporary tablespace USER_TEMP tempfile size 672m autoextend on next 672m extent management local;
    

Task 3: Passi XTTS M5 incrementali

Task 3.1: Fase iniziale

  1. Scaricare gli script M5 più recenti ed eseguire il decompressione da qui: Migrazione tra piattaforme M5 mediante l'esportazione/importazione di Data Pump trasportabile completo e i backup incrementali RMAN (ID documento 2999157.1). Creare una directory di lavoro su una condivisione NFS condivisa tra origine e destinazione. Il percorso della condivisione NFS deve essere identico sia nell'origine che nella destinazione.

    Se non è possibile eseguire una condivisione NFS, usare una memorizzazione locale. Creare la directory sull'host di origine e copiarla nell'host di destinazione. Questo deve essere ripetuto più volte durante tutto il processo. Il percorso nell'host di origine e di destinazione deve essere identico. In caso contrario, vengono richieste diverse modifiche agli script che esulano dall'ambito di questa procedura.

    mkdir -p <Shared_location>/XTTS_Migration
    mkdir -p <Shared_location>/XTTS_Migration/Backup
    mkdir -p <Shared_location>/XTTS_Migration/DPPUMP
    cd <Shared_location>
    unzip DBMIG.zip
    

    Il file contiene:

    • dbmig_driver_m5.sh: script del driver di migrazione.
    • impdp.sh: script del driver di importazione.
    • Directory log: creata in runtime. Memorizza il log di backup RMAN, i log di migrazione e i log aggiuntivi.
      • rman_mig_bkp.log: file di log della migrazione centralizzata.
      • rman_mig_bkp.lck: file di blocco creato all'inizio di ogni backup per impedire l'esecuzione concorrente del driver. Se l'esecuzione di un driver viene interrotta, il blocco non verrà rimosso. Il problema deve essere esaminato e risolto prima di rimuovere il blocco.
    • Directory cmd: creata in runtime. Memorizza gli script di backup e ripristino RMAN.
      • dbmig_driver.properties: variabili di ambiente.
      • dbmig_ts_list.txt: lista di tablespace con virgole separate.
  2. Modificare le variabili in dbmig_driver.properties (nella directory cmd) per riflettere l'ambiente in uso. Vedere la descrizione dei parametri nel file di configurazione dbmig_driver.properties sezione qui: Migrazione tra piattaforme M5 con esportazione/importazione Data Pump trasportabile completa e backup incrementali RMAN.

    file di esempio dbmig_driver.properties

    ############################################################
    #Source database properties
    #my_M5_prop_version=2
    # -
    # - ORACLE_HOME Path to Oracle Home
    # - ORACLE_SID SID of the source database
    # - SRC_SCAN Connect string to source database via SCAN.
    # If no SCAN, specify source database network name.
    # Enclose in single quotes
    # Example: '@myhost-scan/db1'
    # Example: '@localhost/pdb1'
    # - MIG_PDB Accepted values: 0, 1
    # Choose 0 if source is non-CDB
    # Choose 1 if source is a PDB
    # - PDB_NAME If source is a PDB, specify PDB name.
    # Else leave blank
    # Example: PDB1
    # - BKP_FROM_STDBY Accepted values: 0, 1
    # Choose 0 to back up from primary database,
    # or if Data Guard is not in use.
    # Choose 1 to back up from standby database.
    ############################################################
    export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
    export PATH=$PATH:$ORACLE_HOME/bin
    export ORACLE_SID=soldb1918
    export SRC_SCAN='@scan1/soldb1918'
    export MIG_PDB=0
    export PDB_NAME=
    export BKP_FROM_STDBY=0
    ############################################################
    #Source Data Pump settings
    # - SOURCE_DPDMP Directory path of the directory DATA_PUMP_DIR
    # Example: /u01/app/oracle/m5/data_pump_dir
    # - SOURCE_DPIR Data Pump Directory, typically DATA_PUMP_DIR
    # - SYSTEM_USR Username for Data Pump export.
    # Do not use SYS AS SYSDBA
    # Example: SYSTEM
    # - DP_TRACE Data Pump trace level.
    # Use 0 to disable trace.
    # Use 3FF0300 to full transportable tracing
    # See MOS Doc ID 286496.1 for details.
    # - DP_PARALLEL Data Pump parallel setting.
    # Accepted values: 1 to 999
    # Example: 16
    ############################################################
    export SOURCE_DPDMP=<Shared_location>/XTTS_Migration/DPPUMP
    export SOURCE_DPDIR=DATA_PUMP_DIR
    export SYSTEM_USR=SYSTEM
    export DP_TRACE=0
    export DP_PARALLEL=1
    export DP_ENC_PROMPT=N
    ############################################################
    #Source RMAN settings
    # - BKP_DEST_TYPE Accepted values: DISK, SBT_TAPE
    # Choose DISK to backup up to local storage
    # Choose SBT_TAPE to use ZDLRA
    # - BKP_DEST_PARM If BKP_DEST_TYPE=DISK, enter location for backup:
    # Example: /u01/app/oracle/m5/rman
    # If BKP_DEST_TYPE=SBT_TAPE, enter channel configuration:
    # Example: "'%d_%U' PARMS \"SBT_LIBRARY=<oracle_home>/lib/libra.so,SBT_PARMS=(RA_WALLET='location=file:<oracle_home>/dbs/zdlra credential_alias=<zdlra-connect-string>')\""
    # - CAT_CRED If you use RMAN catalog or ZDLRA, specify connect string to catalog database
    # Example: <scan-name>:<port>/<service>
    # - SECTION_SIZE Section size used in RMAN backups
    # - CHN Number of RMAN channels allocated
    ############################################################
    export BKP_DEST_TYPE=DISK
    export BKP_DEST_PARM=<Shared_location>/XTTS_Migration/Backup
    export CAT_CRED=
    export SECTION_SIZE=64G
    export CHN=8
    ############################################################
    #Destination host settings
    #If specified, the script transfers the RMAN backups and
    #Data Pump dump file to the destination via over SSH.
    #SSH equivalence is required.
    # - DEST_SERVER Network name of the destination server.
    # Leave blank if you manually transfer
    # backups and dump files
    # - DEST_USER User for SSH connection
    # Example: oracle
    # - DEST_WORKDIR The script working directory on destination
    # Example: /u01/app/oracle/m5
    # - DEST_DPDMP The directory path used by DATA_PUMP_DIR
    # in destination database
    # Example: /u01/app/oracle/m5/data_pump_dir
    ############################################################
    export DEST_SERVER=srvadm01
    export DEST_USER=oracle
    export DEST_WORKDIR=<Shared_location>/XTTS_Migration
    export DEST_DPDMP=<Shared_location>/XTTS_Migration/DPDUMP
    ############################################################
    #Advanced settings
    #Normally, you don't need to edit this section
    ############################################################
    export WORKDIR=$PWD
    export LOG_DIR=${WORKDIR}/log
    export CMD_DIR=${WORKDIR}/cmd
    export PATH=$PATH:$ORACLE_HOME/bin
    export DT='date +%y%m%d%H%M%S'
    export CMD_MKDIR='which mkdir'
    export CMD_TOUCH='which touch'
    export CMD_CAT='which cat'
    export CMD_RM='which rm'
    export CMD_AWK='which awk'
    export CMD_SCP='which scp'
    export CMD_CUT='which cut'
    export CMD_PLATFORM='uname'
    if [[ "$CMD_PLATFORM" = "Linux" ]]; then
    export CMD_GREP="/usr/bin/grep"
    else
    if [[ "$CMD_PLATFORM" = "AIX" ]]; then
    export CMD_GREP="/usr/bin/grep"
    else
    if [[ "$CMD_PLATFORM" = "HPUX" ]]; then
    export CMD_GREP="/usr/bin/grep"
    else
    export CMD_GREP='which ggrep'
    fi
    fi
    fi
    export my_M5_prop_version=2
    

    Creare directory per i file di dump di Data Pump nei database di origine e di destinazione.

    create directory M5_XTTS_MIG as '<Shared_Location>/XTTS_Migration/DPDUMP';
    grant read,write on directory M5_XTTS_MIG  to sys,system;
    

Task 3.2: Backup e ripristino di livello 0

  1. Nel sistema di origine, eseguire il login come utente Oracle con le variabili di ambiente (ORACLE_HOME e ORACLE_SID) impostate sul database di origine, quindi eseguire il backup:

    cd <Shared_location>
    nohup sh dbmig_driver_m5.sh L0 &
    
  2. Se non si utilizza un NFS condiviso, copiare la directory di lavoro nell'host di destinazione.

  3. Ripristinare i file di dati sul sistema di destinazione.

    Nella destinazione, impostare l'ambiente sul database di destinazione. Lo script del driver crea uno script di ripristino. Viene memorizzato nella directory cmd:

    cd <Shared_location>/XTTS_Migration
    cp nohup.out nohup.out_L0
    ls -ltra cmd/restore_L0_*
    rman target / cmdfile=<restore_cmdfile_name>
    

    Controllare il file di log RMAN:

    egrep "WARN-|ORA-" log/restore_*.log
    

Task 3.3: Fase di spostamento in avanti

Durante questa fase, viene creato un backup incrementale nel database di origine e trasferito al sistema di destinazione.

Il backup viene convertito nel formato endian di destinazione e applicato ai file di dati di destinazione. Questo processo può essere ripetuto più volte per mantenere sincronizzato il database di destinazione.

Ogni backup incrementale è più piccolo di quello precedente e riduce la finestra del tempo di inattività finale.

Nota: è possibile eseguire più backup sull'origine senza applicarli alla destinazione.

  1. All'origine, eseguire un backup incrementale di livello 1 (L1) del database di origine:
   cd <Shared_location>/XTTS_Migration
   cp nohup.out nohup.out_1
   nohup sh dbmig_driver_m5.sh L1 &
  1. Se non si utilizza un NFS condiviso, copiare la directory di lavoro nell'host di destinazione.

  2. Applicare il backup incrementale alle copie dei file di dati nel sistema di destinazione. Nel sistema di destinazione, eseguire il login come utente Oracle con le variabili di ambiente appropriate impostate, eseguire il passo di rollforward dei file di dati come indicato di seguito.

Nel sistema di destinazione, eseguire il login come utente Oracle con le variabili di ambiente appropriate impostate. Lo script del driver crea uno script di ripristino. Viene memorizzato nella directory cmd: ripristinare il backup di livello 1 (L1) nel database di destinazione utilizzando lo script di ripristino più recente.

   cd <Shared_location>/XTTS_Migration
   ls -ltra cmd/restore_L1_*
   cp nohup.out nohup.out_3
   rman target / cmdfile=<restore_cmdfile_name>

Controllare il file di log RMAN:

   egrep "WARN-|ORA-" log/restore_*.log

Il passo di rollforward si connette al database di destinazione e applica i backup incrementali nei file di dati delle tablespace per ogni tablespace trasportata.

Ripetere la fase di avanzamento fino alla finestra di cutover del database.

Task 3.4: Fase di backup incrementale finale

  1. Disabilitare i parametri correlati all'audit riportati di seguito nell'origine e nella destinazione fino al completamento dell'importazione. Riabilitarli al termine dell'importazione:
   show parameter audit_sys_operations
   show parameter audit_trail
   alter system set audit_trail=none scope=spfile sid='*';
   alter system set audit_sys_operations=FALSE scope=spfile sid='*';
   srvctl stop database -d ${ORACLE_UNQNAME}
   srvctl start database -d ${ORACLE_UNQNAME}
   show parameter audit_sys_operations
   show parameter audit_trail
  1. All'origine, eseguire il backup incrementale di livello 1 finale (L1) del database di origine:

Lo script esegue le seguenti operazioni: - Prompt per la password di sistema - Imposta le tablespace in modalità di sola lettura - Esegue il backup incrementale finale - Esegue l'esportazione di Data Pump

   cd <Shared_location>/XTTS_Migration
   cp nohup.out nohup.out_1
   nohup sh dbmig_driver_m5.sh L1F &
  1. Se non si utilizza un NFS condiviso, copiare la directory di lavoro nell'host di destinazione.

  2. Applica l'ultimo backup incrementale ai file di dati di destinazione.

Nella destinazione, impostare l'ambiente sul database di destinazione. Lo script del driver crea uno script di ripristino. Viene memorizzato nella directory cmd:

   cd <Shared_location>/XTTS_Migration
   ls -ltra cmd/restore_L1F_*

Ripristinare il backup finale di livello 1 (L1) nel database di destinazione utilizzando lo script di ripristino finale.

   cd <Shared_location>/XTTS_Migration
   cp nohup.out nohup.out_5
   nohup rman target / cmdfile=<restore_cmdfile_name> &

Controllare il file di log RMAN:

   egrep "WARN-|ORA-" log/restore_*.log

Task 3.5: Importazione di Data Pump

  1. Sulla destinazione, modificare lo script del driver di importazione (impdp.sh). Utilizzare le informazioni sul database di destinazione per compilare le variabili.

    • ORACLE_HOME: percorso alla Oracle home
    • ORACLE_SID: SID del database di destinazione
    • ORACLE_CONNECT_STRING: stringa di connessione
    • DATA_PUMP_PARALLEL: livello parallelo
    • DATA_PUMP_TRACE: livello di trace

Lo script del driver di importazione accetta quattro parametri:

expdp_dumpfile: Name of the Data Pump dump file, e.g., exp_UP19_240206134155.dmp
rman_last_restore_log: Relative path to the last RMAN restore log
run-mode: One of the below:
    test: Generates the Data Pump parameter file. Does not start Data Pump.
    test-readonly. Generates the Data Pump parameter file and adds TRANSPORTABLE=KEEP_READ_ONLY to the Data Pump parameter file. Review the documentation for the usage of this parameter. Does not start Data Pump.
    run: Generates the Data Pump parameter file. Starts Data Pump to perform the import.
    run-readonly: Generates the Data Pump parameter file and adds TRANSPORTABLE=KEEP_READ_ONLY to the Data Pump parameter file. Review the documentation for the usage of this parameter. Starts Data Pump to perform the import.

  DP_ENC_PROMPT: 
     One of the below
        Y: Will prompt the user for an encryption password in case one was used for the export
        N: Will not prompt the user for an encryption password.

Avviare lo script del driver di importazione in modalità di test per verificare la correttezza del file dei parametri Data Pump generato:

   cd <Shared_location>/XTTS_Migration
   sh impdp.sh <expdp_dumpfile> <rman_last_restore_log> test N

Lo script del driver genera il file dei parametri nella directory corrente. Esamina.

$ vi imp_<oracle_sid>_<timestamp>_xtts.par

Non modificare il file dei parametri Data Pump generato. Se è necessario modificare il file dei parametri, modificare il codice nello script del driver in modo che generi il file dei parametri desiderato.

Avviare lo script del driver di importazione in modalità di esecuzione per eseguire l'importazione di Data Pump:

   cd <Shared_location>/XTTS_Migration
   sh impdp.sh <expdp_dumpfile> <rman_last_restore_log> run N

Rivedere sempre il file di log di Data Pump. Anche se Data Pump è elencato come riuscito, è sempre necessario rivedere il file di log di Data Pump per individuare eventuali errori critici.

  1. Riabilitare i parametri di audit nei database di origine e di destinazione al termine dell'importazione.
   show parameter audit_sys_operations
   show parameter audit_trail
   alter system set audit_trail=<value before migration taken above> scope=spfile sid='*';
   alter system set audit_sys_operations=<value before migration taken above> scope=spfile sid='*';
   srvctl stop database -d ${ORACLE_UNQNAME}
   srvctl start database -d ${ORACLE_UNQNAME}
   show parameter audit_sys_operations
   show parameter audit_trail
  1. Convalida i dati trasportati.
   rman target sys/<password>@<target_db_name> trace=rman_trace.trc log=<backup_location>/tablespace_validate.log
   validate tablespace <comma-separated tablespace list> check logical;
  1. Assegnare la tablespace degli utenti per annullare le modifiche apportate nella preparazione del database di destinazione.
   select 'alter user '||username||' default tablespace users;' from dba_users where default_tablespace='USERS_OCI';
  Execute the alter commands generated by above select query.
   select count(*) from dba_users where default_tablespace='USERS_OCI';
   ALTER DATABASE DEFAULT TABLESPACE USERS;
   drop tablespace USERS_OCI including contents and datafiles;
   select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME='USERS';

Convalidare i dati nei database di origine e destinazione.

Collegamenti correlati

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.

Per la documentazione del prodotto, visitare Oracle Help Center.