Migrar o Oracle Database para a OCI Usando o M5 Cross-Endian XTTS com Backups Incrementais do RMAN
Introdução
Este tutorial descreve como migrar um Oracle Database para a Oracle Cloud Infrastructure (OCI) usando a Migração de Plataforma M5 Cross Endian com Data Pump Totalmente Transportável e backups incrementais do RMAN.
Esse método permite a migração entre sistemas com diferentes formatos endian, minimizando o tempo de inatividade do aplicativo.
O processo começa com uma cópia de backup completa da origem para o destino. Em seguida, os backups incrementais são aplicados para manter o destino quase sincronizado com a origem. O tempo de inatividade só é necessário durante o backup incremental final e a exportação/importação de metadados.
Detalhes de Ambiente
- Banco de Dados de Origem (NON-CDB):
- Versão do Banco de Dados:
19.29.0.0 - Sistema Operacional:
AIX
- Versão do Banco de Dados:
- Banco de Dados de Destino (NON-CDB):
- Versão do Banco de Dados:
19.29.0.0 (OCI) - Sistema Operacional:
Oracle Linux
- Versão do Banco de Dados:
Objetivos
- Use Tablespaces Transportáveis entre Plataformas (XTTS) com backups incrementais do RMAN para migrar dados entre plataformas endian com tempo de inatividade mínimo.
Pré-requisitos
-
Os bancos de dados de origem e destino devem estar no modo
ARCHIVELOG. -
Este procedimento suporta uma versão mínima de v19.18 para o banco de dados de origem. O upgrade para o Oracle Database 26ai é suportado.
-
Os tablespaces
SYSTEM,SYSAUX,UNDOeTEMPsão excluídos. Todos os outros tablespaces devem ser incluídos nodbmig_ts_list.txt. -
A plataforma cruzada só é possível com a Enterprise Edition. Este procedimento não pode ser usado com a Standard Edition.
-
O conjunto de caracteres deve ser o mesmo nos bancos de dados de origem e de destino.
-
O parâmetro
db_create_file_destdeve ser definido no banco de dados de destino. -
Verifique os Patches Proativos Recomendados do Data Pump para a versão 19.10 e acima de KB107134 do MOS e aplique todas as correções necessárias para o banco de dados 19.18 ou superior na origem e no destino.
-
Verifique os Patches Proativos Recomendados do Data Pump para o 23ai / 26ai KB160561 e aplique todas as correções necessárias para o banco de dados 26ai ou superior no destino.
-
Ative o rastreamento de alterações de bloco para melhorar o desempenho dos backups Incrementais (Opcional).
-
Os tablespaces devem estar no modo
READ WRITE. -
Tablespaces no modo
READ ONLYpodem ser migrados usando o XTTS padrão. -
O parâmetro
COMPATIBLEdeve ser o mesmo na origem e no destino (mínimo19.0.0.0). -
O RMAN deve usar
BACKUPSET. Não deve usarCOPY.
Tarefa 1: Preparar o Banco de Dados de Origem
-
Execute a consulta a seguir para verificar o formato endian no banco de dados de origem.
col PLATFORM_NAME for a50 select platform_name, platform_id, endian_format from v$transportable_platform; -
Identifique os tablespaces no banco de dados de origem que serão transportados. Execute a consulta a seguir se estiver migrando todos os tablespaces.
select tablespace_name from dba_tablespaces where contents='PERMANENT' and tablespace_name not in ('SYSTEM','SYSAUX'); -
Verificar violações do conjunto de transporte:
exec dbms_tts.transport_set_check('<comma-separated tablespace list>'); SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS; -
(Opcional) Ative o rastreamento de alterações em blocos no banco de dados de origem para melhorar o desempenho dos backups incrementais.
-
Verifique se todos os tablespaces estão on-line no banco de dados de origem.
Tarefa 2: Preparar o Banco de Dados de Destino
-
Criar um novo tablespace de usuários.
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;Use a saída DDL (Data Definition Language) acima e substitua o nome do grupo de discos conforme abaixo e crie um novo tablespace de usuários.
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;Designe o novo tablespace de usuários USERS_OCI a todos os usuários do banco de dados que têm o tablespace padrão USERS usando a consulta a seguir.
select 'alter user '||username||' default tablespace USERS_OCI;' from dba_users where default_tablespace='USERS';A saída da consulta de seleção acima deve retornar 0 após a reatribuição do tablespace de novos usuários.
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'; -
Criar tablespaces temporários no banco de dados de destino. Execute a consulta a seguir na origem e reúna os detalhes do tablespace.
Execute a seguinte consulta na origem:
select TABLESPACE_NAME from dba_tablespaces where CONTENTS='TEMPORARY';Em seguida, crie tablespaces temporários no banco de dados de destino. Por exemplo:
create bigfile temporary tablespace USER_TEMP tempfile size 672m autoextend on next 672m extent management local;
Tarefa 3: Etapas Incrementais M5 XTTS
Tarefa 3.1: Fase Inicial
-
Faça download dos scripts M5 mais recentes e descompacte-os aqui: Migração da Plataforma M5 Cross Endian usando Exportação/Importação do Data Pump Totalmente Transportável e Backups Incrementais do RMAN (ID do Documento 2999157.1). Crie um diretório de trabalho em um compartilhamento NFS compartilhado entre a origem e o destino. O caminho para o compartilhamento NFS deve ser idêntico na origem e no destino.
Se um compartilhamento NFS não for possível, use qualquer armazenamento local. Crie o diretório no host de origem e copie-o para o host de destino. Isso precisa ser repetido várias vezes ao longo do processo. O caminho no host de origem e de destino deve ser idêntico. Caso contrário, serão necessárias várias alterações nos scripts que estejam além do escopo deste procedimento.
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.zipO arquivo contém:
dbmig_driver_m5.sh: Script do driver de migração.impdp.sh: Script do driver de importação.- Diretório
log: Criado no runtime. Armazena o log de backup do RMAN, logs de migração e logs adicionais.rman_mig_bkp.log: Arquivo de log de migração centralizado.rman_mig_bkp.lck: Bloquear arquivo criado no início de cada backup para impedir a execução simultânea do driver. Se a execução de um driver abortar, o bloqueio não será removido. O problema deve ser investigado e resolvido antes de remover o bloqueio.
- Diretório
cmd: Criado no runtime. Armazena os scripts de backup e restauração do RMAN.dbmig_driver.properties: Variáveis de ambiente.dbmig_ts_list.txt: Lista de tablespaces separados por vírgulas.
-
Modifique as variáveis em dbmig_driver.properties (no diretório cmd) para refletir o ambiente que você está usando. Consulte a descrição dos parâmetros no arquivo de configuração
dbmig_driver.propertiesseção aqui: Migração da Plataforma Endian Cruzada M5 usando Exportação/Importação do Data Pump Totalmente Transportável e Backups Incrementais do RMAN.arquivo de amostra 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=2Crie diretórios para arquivos de dump de datapump em bancos de dados de origem e de destino.
create directory M5_XTTS_MIG as '<Shared_Location>/XTTS_Migration/DPDUMP'; grant read,write on directory M5_XTTS_MIG to sys,system;
Tarefa 3.2: Backup e restauração de nível 0
-
No sistema de origem, faça log-in como usuário da Oracle com as variáveis de ambiente (
ORACLE_HOMEeORACLE_SID) definidas para o banco de dados de origem. Em seguida, execute o backup:cd <Shared_location> nohup sh dbmig_driver_m5.sh L0 & -
Se não estiver usando um NFS compartilhado, copie o diretório de trabalho para o host de destino.
-
Restaure os arquivos de dados no sistema de destino.
No destino, defina o ambiente para o banco de dados de destino. O script do driver cria um script de restauração. Ela é armazenada no diretório cmd:
cd <Shared_location>/XTTS_Migration cp nohup.out nohup.out_L0 ls -ltra cmd/restore_L0_* rman target / cmdfile=<restore_cmdfile_name>Verifique o arquivo de log do RMAN:
egrep "WARN-|ORA-" log/restore_*.log
Tarefa 3.3: Fase de Transferência
Durante essa fase, um backup incremental é criado no banco de dados de origem e transferido para o sistema de destino.
O backup é convertido para o formato endian de destino e aplicado aos arquivos de dados de destino. Este processo pode ser repetido várias vezes para manter o banco de dados de destino sincronizado.
Cada backup incremental é menor que o anterior e reduz a janela de tempo de inatividade final.
Observação: É possível executar vários backups na origem sem aplicá-los ao destino.
- Na origem, execute um backup incremental de nível 1 (L1) do banco de dados de origem:
cd <Shared_location>/XTTS_Migration
cp nohup.out nohup.out_1
nohup sh dbmig_driver_m5.sh L1 &
-
Se não estiver usando um NFS compartilhado, copie o diretório de trabalho para o host de destino.
-
Aplique o backup incremental às cópias do arquivo de dados no sistema de destino. No sistema de destino, faça log-in como o usuário Oracle com as variáveis de ambiente apropriadas definidas, execute a etapa roll forward datafiles da seguinte forma.
No sistema de destino, faça log-in como o usuário Oracle com as variáveis de ambiente apropriadas definidas. O script do driver cria um script de restauração. Ele é armazenado no diretório cmd: Restaure o backup de nível 1 (L1) no banco de dados de destino usando o script de restauração mais recente.
cd <Shared_location>/XTTS_Migration
ls -ltra cmd/restore_L1_*
cp nohup.out nohup.out_3
rman target / cmdfile=<restore_cmdfile_name>
Verifique o arquivo de log do RMAN:
egrep "WARN-|ORA-" log/restore_*.log
A etapa de avanço se conecta ao banco de dados de destino e aplica os backups incrementais nos arquivos de dados dos tablespaces para cada tablespace que está sendo transportado.
Repita a fase de transferência até a janela de transferência do banco de dados.
Tarefa 3.4: Fase Final de Backup Incremental
- Desative os parâmetros relacionados à auditoria a seguir na origem e no destino até a conclusão da importação. Reative-os após a conclusão da importação:
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
- Na origem, execute o backup incremental final de nível 1 (L1) do banco de dados de origem:
O script executa o seguinte: - Prompts para a senha do sistema - Define tablespaces para o modo somente leitura - Executa o backup incremental final - Executa a exportação do Data Pump
cd <Shared_location>/XTTS_Migration
cp nohup.out nohup.out_1
nohup sh dbmig_driver_m5.sh L1F &
-
Se não estiver usando um NFS compartilhado, copie o diretório de trabalho para o host de destino.
-
Aplique o último backup incremental aos arquivos de dados de destino.
No destino, defina o ambiente para o banco de dados de destino. O script do driver cria um script de restauração. Ela é armazenada no diretório cmd:
cd <Shared_location>/XTTS_Migration
ls -ltra cmd/restore_L1F_*
Restaure o backup final de nível 1 (L1) no banco de dados de destino usando o script de restauração final.
cd <Shared_location>/XTTS_Migration
cp nohup.out nohup.out_5
nohup rman target / cmdfile=<restore_cmdfile_name> &
Verifique o arquivo de log do RMAN:
egrep "WARN-|ORA-" log/restore_*.log
Tarefa 3.5: Importação do Data Pump
-
No destino, edite o script do driver de importação (impdp.sh). Use informações sobre o banco de dados de destino para preencher as variáveis.
ORACLE_HOME: Caminho para o Oracle homeORACLE_SID: SID do banco de dados de destinoORACLE_CONNECT_STRING: String de conexãoDATA_PUMP_PARALLEL: Nível paraleloDATA_PUMP_TRACE: Nível de rastreamento
O script do driver de importação utiliza quatro 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 o script do driver de importação no modo de teste para verificar a exatidão do arquivo de parâmetros do Data Pump gerado:
cd <Shared_location>/XTTS_Migration
sh impdp.sh <expdp_dumpfile> <rman_last_restore_log> test N
O script do driver gera o arquivo de parâmetros no diretório atual. Examine-o.
$ vi imp_<oracle_sid>_<timestamp>_xtts.par
Não altere o arquivo de parâmetros do Data Pump gerado. Se você precisar alterar o arquivo de parâmetros, altere o código no script do driver, para que ele gere o arquivo de parâmetros desejado.
Inicie o script do driver de importação no modo de execução para executar a importação do Data Pump:
cd <Shared_location>/XTTS_Migration
sh impdp.sh <expdp_dumpfile> <rman_last_restore_log> run N
Sempre revise o arquivo de log do Data Pump. Mesmo que o Data Pump seja listado como bem-sucedido, você sempre deverá revisar o arquivo de log do Data Pump para verificar se há erros críticos.
- Reative os parâmetros de auditoria nos bancos de dados de origem e de destino após a conclusão da importação.
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
- Validar os dados 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;
- Designe o tablespace dos usuários para reverter as alterações feitas na preparação do banco de dados de 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 os dados nos bancos de dados de origem e de destino.
Links Relacionados
Confirmações
- Autor - Pavan Yennampelli (Engenheiro Principal de Nuvem)
Mais Recursos de Aprendizado
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal do Oracle Learning no YouTube. Além disso, acesse education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Migrate Oracle Database to OCI Using M5 Cross-Endian XTTS with RMAN Incremental Backups
G56677-01