Migración de Oracle Database a OCI mediante XTTS entre Aditivos M5 con copias de seguridad incrementales de RMAN

Introducción

En este tutorial se describe cómo migrar una instancia de Oracle Database a Oracle Cloud Infrastructure (OCI) mediante la migración de plataforma entre endios M5 con pump de datos transportable completo y copias de seguridad incrementales de RMAN.

Este método permite la migración entre sistemas con diferentes formatos endian al tiempo que minimiza el tiempo de inactividad de la aplicación.

El proceso comienza con una copia de seguridad completa del origen al destino. A continuación, se aplican copias de seguridad incrementales para mantener el destino casi sincronizado con el origen. El tiempo de inactividad solo es necesario durante la copia de seguridad incremental final y la exportación/importación de metadatos.

Detalles de Entorno

Objetivos

Requisitos

Tarea 1: Preparación de la base de datos origen

  1. Ejecute la siguiente consulta para comprobar el formato endian en la base de datos origen.

    col PLATFORM_NAME for a50
    select platform_name, platform_id, endian_format from v$transportable_platform;
    
  2. Identifique los tablespaces en la base de datos origen que se va a transportar. Ejecute la siguiente consulta si va a migrar todos los tablespaces.

    select tablespace_name from dba_tablespaces where contents='PERMANENT' and tablespace_name not in ('SYSTEM','SYSAUX');
    
  3. Compruebe las violaciones del juego de transporte:

    exec dbms_tts.transport_set_check('<comma-separated tablespace list>');
    SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS;
    
  4. (Opcional) Active el seguimiento de cambios de bloque en la base de datos de origen para mejorar el rendimiento de las copias de seguridad incrementales.

  5. Verifique que todos los tablespaces están en línea en la base de datos origen.

Tarea 2: Preparación de la Base de Datos de Destino

  1. Cree un tablespace de nuevos usuarios.

    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;
    

    Utilice la salida del lenguaje de definición de datos (DDL) anterior y sustituya el nombre del grupo de discos como se indica a continuación y cree un nuevo tablespace de usuario.

    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;
    

    Asigne el tablespace de nuevos usuarios USERS_OCI a todos los usuarios de base de datos que tengan el tablespace por defecto USERS mediante la siguiente consulta.

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

    La salida de la consulta de selección anterior debe devolver 0 después de reasignar el tablespace de nuevos usuarios.

    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. Crear tablespaces temporales en la base de datos destino. Ejecute la siguiente consulta en el origen y recopile los detalles del tablespace.

    Ejecute la siguiente consulta en el origen:

    select TABLESPACE_NAME from dba_tablespaces where CONTENTS='TEMPORARY';
    

    A continuación, cree tablespaces temporales en la base de datos destino. Por ejemplo:

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

Tarea 3: Pasos incrementales de M5 XTTS

Tarea 3.1: Fase inicial

  1. Descargue los scripts M5 más recientes y descomprímalos desde aquí: Migración de plataforma entre medios M5 mediante exportación/importación de pump de datos transportable completo y copias de seguridad incrementales de RMAN (ID de documento 2999157.1). Cree un directorio de trabajo en un recurso compartido NFS que se comparta entre origen y destino. La ruta al recurso compartido NFS debe ser idéntica tanto en el origen como en el destino.

    Si no es posible un recurso compartido NFS, utilice cualquier almacenamiento local. Cree el directorio en el host de origen y cópielo en el host de destino. Esto debe repetirse varias veces a lo largo del proceso. La ruta de acceso en el host de origen y destino debe ser idéntica. Si no es así, se requieren varios cambios en las secuencias de comandos que están fuera del ámbito de este procedimiento.

    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
    

    El archivo contiene:

    • dbmig_driver_m5.sh: script del controlador de migración.
    • impdp.sh: script de controlador de importación.
    • Directorio log: creado en tiempo de ejecución. Almacena el log de copia de seguridad de RMAN, los logs de migración y los logs adicionales.
      • rman_mig_bkp.log: archivo log de migración centralizado.
      • rman_mig_bkp.lck: archivo de bloqueo creado al principio de cada copia de seguridad para evitar la ejecución simultánea del controlador. Si se interrumpe la ejecución de un controlador, el bloqueo no se eliminará. El problema se debe investigar y resolver antes de quitar el bloqueo.
    • Directorio cmd: creado en tiempo de ejecución. Almacena los archivos de comandos de copia de seguridad y restauración de RMAN.
      • dbmig_driver.properties: variables de entorno.
      • dbmig_ts_list.txt: lista de tablespaces separados por comas.
  2. Modifique las variables en dbmig_driver.properties (en el directorio cmd) para reflejar el entorno que está utilizando. Consulte aquí la descripción de los parámetros en la sección dbmig_driver.properties del archivo de configuración: M5 Cross Endian Platform Migration using Full Transportable Data Pump Export/Import and RMAN Incremental Backups.

    archivo de ejemplo 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
    

    Cree directorios para los archivos de volcado de pump de datos en las bases de datos de origen y destino.

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

Tarea 3.2: Copia de seguridad y restauración de nivel 0

  1. En el Sistema de Origen, conéctese como usuario Oracle con las variables de entorno (ORACLE_HOME y ORACLE_SID) definidas en la base de datos de origen y, a continuación, ejecute la copia de seguridad:

    cd <Shared_location>
    nohup sh dbmig_driver_m5.sh L0 &
    
  2. Si no utiliza un NFS compartido, copie el directorio de trabajo en el host de destino.

  3. Restaurar los archivos de datos en el sistema de destino.

    En destino, defina el entorno en la base de datos destino. La secuencia de comandos del controlador crea una secuencia de comandos de restauración. Se almacena en el directorio cmd:

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

    Compruebe el archivo log de RMAN:

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

Tarea 3.3: Fase de arrastre

Durante esta fase, se crea una copia de seguridad incremental en la base de datos de origen y se transfiere al sistema de destino.

La copia de seguridad se convierte al formato endian de destino y se aplica a los archivos de datos de destino. Este proceso se puede repetir varias veces para mantener la base de datos destino sincronizada.

Cada copia de seguridad incremental es más pequeña que la anterior y reduce la ventana de tiempo de inactividad final.

Nota: Se pueden ejecutar varias copias de seguridad en el origen sin aplicarlas al destino.

  1. En el origen, ejecute una copia de seguridad incremental de nivel 1 (L1) de la base de datos origen:
   cd <Shared_location>/XTTS_Migration
   cp nohup.out nohup.out_1
   nohup sh dbmig_driver_m5.sh L1 &
  1. Si no utiliza un NFS compartido, copie el directorio de trabajo en el host de destino.

  2. Aplique la copia de seguridad incremental a las copias del archivo de datos en el sistema de destino. En el sistema de destino, conéctese como usuario de Oracle con el juego de variables de entorno adecuado y ejecute el paso de transferencia de archivos de datos de la siguiente manera.

En el sistema de destino, conéctese como usuario de Oracle con el juego de variables de entorno adecuado. La secuencia de comandos del controlador crea una secuencia de comandos de restauración. Se almacena en el directorio cmd: restaure la copia de seguridad de nivel 1 (L1) en la base de datos destino mediante el script de restauración más reciente.

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

Compruebe el archivo log de RMAN:

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

El paso de avance se conecta a la base de datos destino y aplica las copias de seguridad incrementales en los archivos de datos de los tablespaces para cada tablespace que se está transportando.

Repita la fase de avance hasta la ventana de migración total de la base de datos.

Tarea 3.4: Fase de copia de seguridad incremental final

  1. Desactive los siguientes parámetros relacionados con la auditoría en el origen y el destino hasta que finalice la importación. Vuelva a activarlas una vez finalizada la importación:
   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. En el origen, ejecute la copia de seguridad incremental de nivel 1 (L1) final de la base de datos origen:

El script realiza lo siguiente: - Solicita la contraseña del sistema - Define los tablespaces en modo de solo lectura - Ejecuta la copia de seguridad incremental final - Ejecuta la exportación de pump de datos

   cd <Shared_location>/XTTS_Migration
   cp nohup.out nohup.out_1
   nohup sh dbmig_driver_m5.sh L1F &
  1. Si no utiliza un NFS compartido, copie el directorio de trabajo en el host de destino.

  2. Aplicar la última copia de seguridad incremental a los archivos de datos de destino.

En destino, defina el entorno en la base de datos destino. La secuencia de comandos del controlador crea una secuencia de comandos de restauración. Se almacena en el directorio cmd:

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

Restaure la copia de seguridad final de nivel 1 (L1) en la base de datos destino mediante el script de restauración final.

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

Compruebe el archivo log de RMAN:

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

Tarea 3.5: Importación de pump de datos

  1. En el destino, edite el script del controlador de importación (impdp.sh). Utilice información sobre la base de datos de destino para rellenar las variables.

    • ORACLE_HOME: ruta al directorio raíz de Oracle
    • ORACLE_SID: SID de base de datos destino
    • ORACLE_CONNECT_STRING: cadena de conexión
    • DATA_PUMP_PARALLEL: nivel paralelo
    • DATA_PUMP_TRACE: nivel de rastreo

El script del controlador de importación toma cuatro parámetros:

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.

Inicie el script del controlador de importación en modo de prueba para verificar que el archivo de parámetros de pump de datos generado sea correcto:

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

La secuencia de comandos del controlador genera el archivo de parámetros en el directorio actual. Examínelo.

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

No cambie el archivo de parámetros de pump de datos generado. Si necesita cambiar el archivo de parámetros, cambie el código en el script del controlador para que genere el archivo de parámetros deseado.

Inicie el script de controlador de importación en modo de ejecución para realizar la importación de pump de datos:

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

Revise siempre el archivo log de pump de datos. Incluso si el pump de datos se muestra como correcto, siempre debe revisar el archivo log del pump de datos para detectar cualquier error crítico.

  1. Vuelva a activar los parámetros de auditoría en las bases de datos de origen y destino una vez finalizada la importación.
   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. Valide los datos transportados.
   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. Asigne el tablespace de usuarios para revertir los cambios realizados en la preparación de la base de datos destino.
   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';

Valide los datos en las bases de datos de origen y destino.

Enlaces relacionados

Acuses de recibo

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal de YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre el producto, visite Oracle Help Center.