Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse para obtener una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
Migre Oracle Database a OCI mediante V4 Tablespaces Transportables entre Plataformas y actualice de 12c a 19c
Introducción
En este tutorial se tratan los pasos necesarios para utilizar V4 Tablespaces Transportables entre Plataformas (XTTS) con copias de seguridad incrementales de Oracle Recovery Manager (RMAN) para migrar datos entre sistemas que tienen diferentes formatos endian, con la menor cantidad de tiempo de inactividad de la aplicación.
El primer paso será copiar una copia de seguridad completa del origen al destino. A continuación, mediante el uso de una serie de copias de seguridad incrementales, cada una más pequeña que la anterior, los datos del sistema de destino se pueden actualizar casi con el sistema de origen, antes de que sea necesario un tiempo de inactividad. Este procedimiento requiere tiempo de inactividad solo durante la copia de seguridad incremental final y la exportación o importación de metadatos.
En este tutorial se describen los procedimientos V4 para la copia de seguridad incremental entre plataformas que se pueden utilizar con 11.2.0.3 y versiones posteriores.
Detalles de Entorno
-
Base de Datos de Origen:
-
Versión de la Base de Datos: 12.1.0.2
-
Sistema operativo: AIX
-
-
Base de datos de destino:
-
Versión de base de datos: 19.18.0.0 (OCI)
-
Sistema operativo: Oracle Linux
-
Objetivos
- Utilice tablespaces transportables entre plataformas (XTTS) con copias de seguridad incrementales de RMAN para migrar datos entre sistemas con diferentes formatos endian, con la menor cantidad de tiempo de inactividad de la aplicación.
Requisitos
-
La versión actual no soporta Windows como origen o destino.
-
La plataforma cruzada solo es posible con Enterprise Edition. Este procedimiento no se puede utilizar con Standard Edition.
-
El parámetro
COMPATIBLE
de la base de datos origen no debe ser mayor que el parámetroCOMPATIBLE
de la base de datos destino. -
La base de datos origen debe estar en modo ARCHIVELOG.
-
Antes de ejecutar scripts XTTS, defina
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
. Otros valores deNLS_LANG
pueden causar errores. -
RMAN en el sistema de origen no debe tener:
-
DISCO DE TIPO DE DISPOSITIVO configurado con COMPRESSED.
-
TIPO DE COPIA DE SEGURIDAD PARA COPIAR. El origen debe tener BACKUP TYPE TO BACKUPSET.
-
Canal por defecto configurado para escribir SBT. Es decir, este procedimiento solo se puede utilizar con canales de disco.
-
Cualquier limitación de configuración de canal. Por ejemplo, MAXSETSIZE, MAXPIECESIZE etc.
-
-
El juego de tablespaces que se van a mover deben estar todos en línea y no contener archivos de datos fuera de línea. Los tablespaces deben ser READ WRITE.
-
Los tablespaces que son READ ONLY se pueden mover con el método XTTS normal. No es necesario incorporar copias de seguridad incrementales entre plataformas para mover tablespaces que siempre estén SOLO READ.
-
Aunque el sistema de destino preferido es Linux (Oracle Linux de 64 bits o una versión certificada de RedHat Linux), este procedimiento se puede utilizar con otros sistemas operativos basados en Unix. Sin embargo, cualquier sistema operativo que no sea Linux debe ejecutar 12.1.0.1 o superior tanto en el destino como en el origen.
-
La versión de origen de Oracle debe ser menor o igual que el destino. Por lo tanto, este procedimiento se puede utilizar como método de actualización.
-
La versión mínima para el origen y el destino es 11.2.0.3. Las versiones anteriores 11.2 probablemente funcionarán de la misma manera, sin embargo, no se probaron.
-
Como se sugiere, pruebe el procedimiento antes de confiar en él para un entorno de producción.
-
La gestión automática de almacenamiento (ASM) solo se puede utilizar para la ubicación final de los archivos de datos en el destino. Las copias de seguridad no se pueden colocar en ASM con esta versión.
-
La ubicación de copia de seguridad del destino debe ser un dispositivo con privilegios de lectura/escritura. No puede ser un dispositivo READ ONLY. Esto puede causar ORA-19624 en la conversión del juego de copias de seguridad.
-
La base de datos de origen y la de destino deben utilizar un juego de caracteres compatible y un juego de caracteres nacional.
-
El tablespace debe estar en READ WRITE en la primera copia de seguridad (nivel 0).
-
La base de datos de origen y de destino debe:
-
Utilice una versión de zona horaria compatible.
-
Tener la última versión del parche.
-
-
Copie los siguientes scripts del nodo de aplicación de Oracle E-Business Suite en el servidor de base de datos de destino (solo para aplicaciones de Oracle E-Business Suite).
audb19c.sql ausy19c.sql adstats.sql auque2.sql
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 transportarán. 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');
-
Cree la vista
transport_set_violations
en la base de datos de origen.exec dbms_tts.transport_set_check('<list of tablespaces with comma saperated>'); 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.
-
Elimine los índices espaciales de parámetros de índice de reconstrucción y modifique los índices espaciales no utilizables.
-
Este paso comprueba para asegurarse de que no tiene el parámetro de reconstrucción de índice en los índices espaciales. Para entornos multiinquilino, ejecute primero el siguiente comando para definir el campo SID de la base de datos en el nombre de la base de datos conectable para la base de datos Oracle (NOMBRE de PDB).
export ORACLE_PDB_SID=[PDB NAME]
-
Para ver si tiene algún parámetro de índice de reconstrucción, en el nodo del servidor de base de datos de origen, como propietario del sistema de archivos del servidor de base de datos de origen y de la instancia de base de datos, utilice SQL*Plus para conectarse a la base de datos de origen como sysdba y ejecutar la siguiente consulta.
select owner,index_name from dba_indexes where index_type='DOMAIN' and upper(parameters) like '%REBUILD%';
-
Para eliminar el parámetro de reconstrucción de índice, utilice SQL*Plus para conectarse a la base de datos origen como propietario del índice y ejecute la siguiente consulta.
alter index [index name] rebuild parameters [parameters]
-
-
Sincronizar índices de texto. Utilice SQL*Plus para conectarse a la base de datos origen como SYSDBA y ejecute la siguiente consulta para buscar todos los índices pendientes de sincronización.
select pnd_index_owner,pnd_index_name,count(*) from ctxsys.ctx_pending group by pnd_index_owner,pnd_index_name;
Para sincronizar los índices, ejecute la siguiente consulta.
exec ctx_ddl.sync_index('[index owner].[index name]');
Tarea 2: Preparación de la base de datos de destino
-
Cree el tablespace temporal de nuevos usuarios. Si la base de datos destino es un entorno multi-inquilino, conéctese a la PDB.
alter session set container=[PDB NAME] 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 anterior del lenguaje de definición de datos (DDL), sustituya el nombre del grupo de discos como se indica a continuación y cree el tablespace de nuevos usuarios.
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 los nuevos usuarios USERS_OCI a todos los usuarios de la 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 debe devolver 0.
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';
-
Cree tablespaces temporales en la base de datos destino. Ejecute la siguiente consulta en el origen y recopile los detalles del tablespace.
select TABLESPACE_NAME from dba_tablespaces where CONTENTS='TEMPORARY'; Create temp tablespaces on target database like below example. create bigfile temporary tablespace USER_TEMP tempfile size 672m autoextend on next 672m extent management local;
-
Cree el directorio
nls/data/9idata
para las aplicaciones de Oracle E-Business Suite.srvctl getenv database -d $ORACLE_UNQNAME perl $ORACLE_HOME/nls/data/old/cr9idata.pl --> on all the nodes of the cluster srvctl setenv database -d $ORACLE_UNQNAME -t ORA_NLS10=$ORACLE_HOME/nls/data/9idata srvctl getenv database -d $ORACLE_UNQNAME
-
Cree
$ORACLE_HOME/appsutil/jre
para las aplicaciones de Oracle E-Business Suite. Copie la carpetaappsutil
de la base de datos origen en la ruta$ORACLE_HOME
al servidor de la base de datos destino en la ruta$ORACLE_HOME
. Ejecute los siguientes comandos en todos los nodos de los servidores de base de datos de destino, una vez que se haya copiado la carpeta.cd $ORACLE_HOME/appsutil ln -s $ORACLE_HOME/jdk/jre cd $ORACLE_HOME/jdk/jre/lib/ext cp $ORACLE_HOME/jlib/orai18n.jar .
-
Configure el esquema sys para las aplicaciones de Oracle E-Business Suite.
export ORACLE_PDB_SID=[PDB_NAME] sqlplus / as sysdba show con_name @audb19c.sql
-
Configure el esquema del sistema para las aplicaciones de Oracle E-Business Suite.
export ORACLE_PDB_SID=[PDB_NAME] sqlplus / as sysdba show con_name @ausy19c.sql
-
Defina el parámetro
CTXSYS
para las aplicaciones de Oracle E-Business Suite.export ORACLE_PDB_SID=[PDB_NAME] sqlplus / as sysdba show con_name exec ctxsys.ctx_adm.set_parameter('file_access_role', 'public');
-
Recopile estadísticas automáticamente para las aplicaciones de Oracle E-Business Suite.
export ORACLE_PDB_SID=[PDB_NAME] sqlplus / as sysdba show con_name alter system enable restricted session; @adstats.sql alter system disable restricted session;
Tarea 3: Pasos XTTS V4 incrementales
Tarea 3.1: Fase inicial
-
Descargue los últimos scripts perl de v4 y descomprímalos desde aquí: V4 Reduce el tiempo de inactividad del tablespace transportable mediante la copia de seguridad incremental entre plataformas (ID de documento 2471245.1). Cree directorios para descomprimir los scripts y el directorio temporal.
Por ejemplo:
mkdir -p <Backup_location>/XTTS_Migration mkdir -p <Backup_location>/XTTS_Migration/XTTS_TEMP
-
Edite el archivo
xtt.properties
en el sistema de origen con la configuración específica del sitio. Para obtener más información sobre los parámetros del archivoxtt.properties
, consulte la descripción de los parámetros en la secciónxtt.properties
del archivo de configuración aquí: V4 Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 2471245.1). Para este procedimiento, solo son obligatorios los siguientes parámetros. Otros son opcionales y/o están disponibles para su uso.tablespaces=<list of tablespaces that are migrated with comma saperated> platformid= <obtained from the query select platform_name,platform_id, endian_format from v$transportable_platform> src_scratch_location= <Backup location on source database server> dest_scratch_location= <Backup location on target database server> dest_datafile_location= <path for the datafile location of PDB > destconnstr=sys/<password>>@<Target PDB Connect String> usermantransport=1 - It is recommended this be set if the source database is running 12c or higher. This causes new 12c (and higher) parallel=1
Tarea 3.2: Fase de preparación
-
Ejecute la copia de seguridad en el sistema de origen. En el sistema de origen, conéctese como usuario de Oracle con el entorno (variables de entorno
ORACLE_HOME
yORACLE_SID
) que apunta a la base de datos de origen, ejecute la copia de seguridad de la siguiente forma.export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3 &
-
Transfiera los siguientes archivos al servidor de base de datos de destino.
-
Copias de seguridad creadas desde el origen
src_scratch_location
hasta el destinodest_scratch_location
. -
Archivo
res.txt
del origen$TMPDIR
al destino$TMPDIR
.
En el siguiente ejemplo, scp se utiliza para transferir la copia de seguridad level=0 creada por el paso anterior del sistema de origen al sistema de destino.
[oracle@source]$ scp /src_scratch_location/* oracle@dest:/dest_scratch [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
-
-
Restaure los archivos de datos en el sistema de destino.
export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 cp nohup.out nohup.out_L0 nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3 &
Tarea 3.3: Fase de arrastre
Durante esta fase, se crea una copia de seguridad incremental a partir de la base de datos origen, se transfiere al sistema de destino, se convierte al formato endian del sistema de destino y, a continuación, se aplica a las copias de archivos de datos de destino convertidas para aplicarlas. Esta fase se puede ejecutar varias veces. Cada copia de seguridad incremental sucesiva debe tardar menos tiempo que la copia de seguridad incremental anterior y actualizará las copias del archivo de datos de destino con la base de datos de origen. Los datos que se transportan (origen) son totalmente accesibles durante esta fase.
Nota: Se pueden ejecutar varias copias de seguridad en el origen sin aplicarlas al destino. Los archivos de copia de seguridad y
res.txt
se deben copiar antes de ejecutar el comando '–restore' en el destino.
-
Cree una copia de seguridad incremental de los tablespaces que se transportan en el sistema de origen.
export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 cp nohup.out nohup.out_1 nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3 &
Este paso creará una copia de seguridad incremental para todos los tablespaces mostrados en el archivo
xtt.properties
. -
Transfiera copias de seguridad incrementales y
res.txt
al sistema de destino. Transfiera las copias de seguridad incrementales (entresrc_scratch_location
ydest_scratch_location
) yres.txt
(entre$TMPDIRs
) del origen al destino. La lista de archivos de copia de seguridad incremental de la copia de seguridad actual se puede encontrar en el archivoincrbackups.txt
del sistema de origen.Por ejemplo:
[oracle@source]$ scp `cat incrbackups.txt` oracle@dest:/dest_scratch_location [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
-
Aplique la copia de seguridad incremental a las copias del archivo de datos en el sistema de destino. En el sistema de destino, conectado como usuario de Oracle con el entorno (variables de entorno
ORACLE_HOME
yORACLE_SID
) que apunta a la base de datos de destino, ejecute el paso de transferencia de archivos de datos de la siguiente manera.export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 cp nohup.out nohup.out_3 $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3
El paso de aplicación de transacciones pendientes 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 transportado.
Nota: Aunque se pueden ejecutar varias copias de seguridad en el origen sin aplicarlas en el destino, el archivo
res.txt
se debe copiar después de la última copia de seguridad y antes de ejecutar--restore
en el destino.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
-
Modifique los tablespaces de origen para que sólo se lean en la base de datos de origen. Ejecute la siguiente consulta si todos los tablespaces se transportan a la base de datos destino.
set lines 300 select 'alter tablespace "'||tablespace_name||'" read only;' from dba_tablespaces where contents='PERMANENT' and tablespace_name not in ('SYSTEM','SYSAUX');
-
Cree la copia de seguridad incremental final de los tablespaces que se transportan en el sistema de origen.
export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 cp nohup.out nohup.out_4 nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3 &
-
Transfiera copias de seguridad incrementales y
res.txt
al sistema de destino.Por ejemplo:
[oracle@source]$ scp 'cat incrbackups.txt' oracle@dest:/dest_scratch_location [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
-
Aplique la última copia de seguridad incremental a los archivos de datos de destino.
export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 cp nohup.out nohup.out_5 nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3 &
Tarea 3.5: Fase de Transporte: Exportación de Metadatos y Tablespaces de Plugin a la Base de Datos Destino
-
Cree un directorio para almacenar los archivos de copia de seguridad de exportación.
Por ejemplo:
mkdir -p <Backup_location>/XTTS_DPUMP
Ejecute la siguiente consulta para crear el directorio en la base de datos origen.
create or replace directory XTTS_DUMP as '<Backup_location>/XTTS_DUMP'; grant read,write on directory XTTS_DUMP to system;
-
Prepare el archivo parfile de exportación.
vi xtts_expdp.par directory=XTTS*DUMP metrics=y dumpfile=xttsfulltts*%U.dmp filesize=1048576000 full=y exclude=STATISTICS logfile=expfulltts.log parallel=4 transportable=always EXCLUDE=NORMAL_OPTIONS
-
Ejecute la exportación del pump de datos en la base de datos origen.
nohup expdp system/<password>@<source_db_name> parfile= xtts_expdp.par &
-
Ejecute el siguiente comando en el servidor de la base de datos destino, que genera el archivo de parámetros de ejemplo para la importación.
export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 $ORACLE_HOME/perl/bin/perl xttdriver.pl -e
Actualice las siguientes líneas de parfile generadas en el paso anterior.
impdp directory=<DATA_PUMP_DIR> logfile=<tts_imp.log> \ network_link=<ttslink> transport_full_check=no \ replace these parameters transport_tablespaces=<tablespace list> \ delete this line from parfile
El parfile de importación final debe tener el siguiente aspecto:
directory=XTTS*DUMP logfile=impdpfulltts.log \ metrics=y dumpfile=xttsfulltts*%U.dmp parallel=6 full=y logtime=all exclude=STATISTICS \ transport_datafiles=<list of datafile path generated from above parfile>
-
Desactive los siguientes parámetros relacionados con la auditoría hasta que finalice la importación como se mencionó. 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
-
Ejecute la importación de pump de datos en la base de datos destino.
-
Cree un directorio para copiar los archivos de copia de seguridad de exportación.
Por ejemplo:
mkdir -p <Backup_location>/XTTS_DPUMP
-
Ejecute el siguiente comando para crear un directorio en la base de datos origen.
create or replace directory XTTS_DUMP as '<Backup_location>/XTTS_DUMP'; grant read,write on directory XTTS_DUMP to system;
nohup impdp system/<password>@<>target_db_name> parfile=<parfile_name> &
-
-
Active los siguientes parámetros relacionados con la auditoría después de finalizar la importación.
show parameter audit_sys_operations show parameter audit_trail alter system set audit_trail=DB scope=spfile sid='_'; alter system set audit_sys_operations=TRUE scope=spfile sid='_'; srvctl stop database -d ${ORACLE_UNQNAME} srvctl start database -d ${ORACLE_UNQNAME} show parameter audit_sys_operations show parameter audit_trail
-
Validar los datos transportados.
rman target sys/<password>@<>target_db_name> trace=rman_trace.trc log=<backup_location>/tablespace_validate.log validate tablespace <list of tablespaces transported with comma saperated> 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';
Valide los datos en las bases de datos de origen y destino.
Enlaces relacionados
Agradecimientos
- Autor: Pavan Yennampelli (ingeniero sénior de servicios en la nube de Oracle North America - NACIE)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visita education.oracle.com/learning-explorer para convertirte en un Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Migrate Oracle Database to OCI using V4 Cross Platform Transportable Tablespaces and Upgrade from 12c to 19c
G17534-01
October 2024