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
- Base de datos de origen (no CDB):
- Versión de la Base de Datos:
19.29.0.0 - Sistema Operativo:
AIX
- Versión de la Base de Datos:
- Base de datos de destino (no CDB):
- Versión de la Base de Datos:
19.29.0.0 (OCI) - Sistema operativo:
Oracle Linux
- Versión de la Base de Datos:
Objetivos
- Utilice tablespaces transportables entre plataformas (XTTS) con copias de seguridad incrementales de RMAN para migrar datos entre plataformas endian con un tiempo de inactividad mínimo.
Requisitos
-
Las bases de datos de origen y destino deben estar en modo
ARCHIVELOG. -
Este procedimiento admite una versión mínima de v19.18 para la base de datos de origen. Se admite la actualización a Oracle Database 26ai.
-
Se excluyen los tablespaces
SYSTEM,SYSAUX,UNDOyTEMP. Todos los demás tablespaces se deben incluir endbmig_ts_list.txt. -
La plataforma cruzada solo es posible con Enterprise Edition. Este procedimiento no se puede utilizar con Standard Edition.
-
El juego de caracteres debe ser el mismo en las bases de datos de origen y destino.
-
El parámetro
db_create_file_destse debe definir en la base de datos destino. -
Revise los parches proactivos recomendados de pump de datos de MOS para la versión 19.10 y posteriores a KB107134 y aplique todas las correcciones necesarias para la base de datos 19.18 o posterior tanto en el origen como en el destino.
-
Revise los parches proactivos recomendados de pump de datos de MOS para 23ai/26ai KB160561 y aplique todas las correcciones necesarias para la base de datos 26ai o superior en destino.
-
Active el seguimiento de cambios de bloque para mejorar el rendimiento de las copias de seguridad incrementales (opcional).
-
Los tablespaces deben estar en modo
READ WRITE. -
Los tablespaces en modo
READ ONLYse pueden migrar mediante XTTS estándar. -
El parámetro
COMPATIBLEdebe ser el mismo en el origen y el destino (mínimo19.0.0.0). -
RMAN debe utilizar
BACKUPSET. No debe utilizarCOPY.
Tarea 1: Preparación de la base de datos origen
-
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; -
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'); -
Compruebe las violaciones del juego de transporte:
exec dbms_tts.transport_set_check('<comma-separated tablespace list>'); SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS; -
(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.
-
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
-
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'; -
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
-
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.zipEl 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.
-
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.propertiesdel 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=2Cree 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
-
En el Sistema de Origen, conéctese como usuario Oracle con las variables de entorno (
ORACLE_HOMEyORACLE_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 & -
Si no utiliza un NFS compartido, copie el directorio de trabajo en el host de destino.
-
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.
- 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 &
-
Si no utiliza un NFS compartido, copie el directorio de trabajo en el host de destino.
-
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
- 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
- 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 &
-
Si no utiliza un NFS compartido, copie el directorio de trabajo en el host de destino.
-
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
-
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 OracleORACLE_SID: SID de base de datos destinoORACLE_CONNECT_STRING: cadena de conexiónDATA_PUMP_PARALLEL: nivel paraleloDATA_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.
- 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
- 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;
- 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
- Autor: Pavan Yennampelli (ingeniero principal en la nube)
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.
Migrate Oracle Database to OCI Using M5 Cross-Endian XTTS with RMAN Incremental Backups
G56682-01