Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Migre o Oracle Database para o OCI usando Tablespaces Transportáveis entre Plataformas V4 e Faça Upgrade de 12c para 19c
Introdução
Este tutorial abrange as etapas necessárias para usar V4 Tablespaces Transportáveis entre Plataformas (XTTS) com backups incrementais do Oracle Recovery Manager (RMAN) para migrar dados entre sistemas que têm diferentes formatos de endian, com a menor quantidade de tempo de inatividade do aplicativo.
A primeira etapa será copiar um backup completo da origem para o destino. Em seguida, usando uma série de backups incrementais, cada um menor que o último, os dados no sistema de destino podem ser atualizados quase com o sistema de origem, antes que qualquer tempo de inatividade seja necessário. Esse procedimento requer tempo de inatividade somente durante o backup incremental final e a exportação ou importação de metadados.
Este tutorial descreve os procedimentos V4 para Backup Incremental entre Plataformas que podem ser usados com 11.2.0.3 e superior.
Detalhes de Ambiente
-
Banco de Dados de Origem:
-
Versão do Banco de Dados: 12.1.0.2
-
Sistema Operacional: AIX
-
-
Banco de Dados de Destino:
-
Versão do Banco de Dados: 19.18.0.0 (OCI)
-
Sistema Operacional: Oracle Linux
-
Objetivos
- Use Tablespaces Transportáveis entre Plataformas (XTTS) com backups incrementais do RMAN para migrar dados entre sistemas que tenham formatos endian diferentes, com o menor tempo de inatividade do aplicativo.
Pré-requisitos
-
A versão atual não suporta o Windows como origem ou destino.
-
A plataforma cruzada só é possível com a Enterprise Edition. Este procedimento não pode ser usado com a Standard Edition.
-
O parâmetro
COMPATIBLE
do banco de dados de origem não deve ser maior que o parâmetroCOMPATIBLE
do banco de dados de destino. -
O banco de dados de origem deve estar no modo ARCHIVELOG.
-
Antes de executar scripts XTTS, defina
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
. Outras definiçõesNLS_LANG
podem causar erros. -
O RMAN no sistema de origem não deve ter:
-
DISCO DE TIPO DE DISPOSITIVO configurado com COMPRESSED.
-
TIPO DE BACKUP A COPIAR. A origem deve ter BACKUP TYPE TO BACKUPSET.
-
Canal padrão configurado para o tipo SBT. Esse procedimento só pode ser usado com canais de disco.
-
Quaisquer limitações de configuração de canal. Por exemplo, MAXSETSIZE, MAXPIECESIZE e assim por diante.
-
-
O conjunto de tablespaces que estão sendo movidos devem estar on-line e não conter arquivos de dados off-line. Tablespaces devem ser READ WRITE.
-
Tablespaces que são SOMENTE LEITURA podem ser movidos com o método XTTS normal. Não há necessidade de incorporar Backups Incrementais entre Plataformas para mover tablespaces que são sempre SOMENTE LEITURA.
-
Embora o sistema de destino preferencial seja o Linux (Oracle Linux de 64 bits ou uma versão certificada do RedHat Linux), esse procedimento pode ser usado com outros sistemas operacionais baseados em Unix. No entanto, qualquer sistema operacional que não seja Linux deve estar executando 12.1.0.1 ou superior no destino e na origem.
-
A versão Oracle da origem deve ser menor ou igual ao destino. Portanto, esse procedimento pode ser usado como um método de atualização.
-
A versão mínima para origem e destino é 11.2.0.3. Versões anteriores da versão 11.2 provavelmente funcionarão da mesma forma, mas não foram testadas.
-
Como sugerido, teste o procedimento antes de confiar nele para um ambiente de produção.
-
O ASM (Automatic Storage Management) só pode ser usado para a localização final de arquivos de dados no destino; os backups não podem ser colocados no ASM com esta versão.
-
O local de backup do destino deve ser um dispositivo com privilégios de leitura/gravação. Isso não pode ser um dispositivo SOMENTE LEITURA. Isso pode causar ORA-19624 na conversão do conjunto de backup.
-
Os bancos de dados de origem e destino devem usar um conjunto de caracteres e um conjunto de caracteres nacionais compatíveis.
-
O tablespace deve estar em READ WRITE no primeiro backup (nível 0).
-
O banco de dados de origem e de destino deve:
-
Use uma versão de fuso horário compatível.
-
Tenha a versão de patch mais recente.
-
-
Copie os scripts a seguir do nó do aplicativo do Oracle E-Business Suite para o servidor do banco de dados de destino (somente para aplicativos do Oracle E-Business Suite).
audb19c.sql ausy19c.sql adstats.sql auque2.sql
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 o(s) tablespace(s) no banco de dados de origem que será(ão) transportado(s). 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');
-
Crie a view
transport_set_violations
no banco de dados de origem.exec dbms_tts.transport_set_check('<list of tablespaces with comma saperated>'); SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS;
-
(Opcional) Ative o rastreamento de alteração de bloco 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.
-
Remova os índices espaciais do parâmetro de índice de recriação e modifique os índices espaciais não utilizáveis.
-
Esta etapa verifica se você não tem o parâmetro de recriação de índice nos índices espaciais. Para ambientes multitenant, execute o comando a seguir primeiro para definir o campo SID do banco de dados como o nome do banco de dados plugável para seu banco de dados Oracle (NOME do PDB).
export ORACLE_PDB_SID=[PDB NAME]
-
Para ver se você tem algum parâmetro de índice de recriação, no nó do servidor de banco de dados de origem, como proprietário do sistema de arquivos e da instância do banco de dados do servidor de banco de dados de origem, use o SQL*Plus para estabelecer conexão com o banco de dados de origem como sysdba e executar a consulta a seguir.
select owner,index_name from dba_indexes where index_type='DOMAIN' and upper(parameters) like '%REBUILD%';
-
Para remover o parâmetro de índice de recriação, use o SQL*Plus para estabelecer conexão com o banco de dados de origem como proprietário do índice e execute a consulta a seguir.
alter index [index name] rebuild parameters [parameters]
-
-
Sincronizar índices de texto. Use o SQL*Plus para estabelecer conexão com o banco de dados de origem como SYSDBA e execute a consulta a seguir para localizar todos os índices com sincronização pendente.
select pnd_index_owner,pnd_index_name,count(*) from ctxsys.ctx_pending group by pnd_index_owner,pnd_index_name;
Para sincronizar os índices, execute a consulta a seguir.
exec ctx_ddl.sync_index('[index owner].[index name]');
Tarefa 2: Preparar o Banco de Dados de Destino
-
Crie um novo tablespace de usuários temporários. Se o banco de dados de destino for um ambiente multitenant, conecte-se ao 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;
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;
Atribua o novo tablespace de usuários USERS_OCI a todos os usuários do banco de dados que têm 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 deve retornar 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';
-
Crie tablespaces temporários no banco de dados de destino. Execute a consulta a seguir na origem e reúna os detalhes do 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;
-
Crie o diretório
nls/data/9idata
para aplicativos do 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
-
Crie
$ORACLE_HOME/appsutil/jre
para aplicativos do Oracle E-Business Suite. Copie a pastaappsutil
do banco de dados de origem no caminho$ORACLE_HOME
para o servidor de banco de dados de destino no caminho$ORACLE_HOME
. Execute os comandos a seguir em todos os nós dos servidores de banco de dados de destino, assim que a pasta for copiada.cd $ORACLE_HOME/appsutil ln -s $ORACLE_HOME/jdk/jre cd $ORACLE_HOME/jdk/jre/lib/ext cp $ORACLE_HOME/jlib/orai18n.jar .
-
Configure o esquema sys para aplicativos do Oracle E-Business Suite.
export ORACLE_PDB_SID=[PDB_NAME] sqlplus / as sysdba show con_name @audb19c.sql
-
Configure o esquema do sistema para aplicativos do Oracle E-Business Suite.
export ORACLE_PDB_SID=[PDB_NAME] sqlplus / as sysdba show con_name @ausy19c.sql
-
Defina o parâmetro
CTXSYS
para aplicativos do 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');
-
Reúna estatísticas automaticamente para aplicativos do 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;
Tarefa 3: Etapas XTTS V4 Incrementais
Tarefa 3.1: Fase Inicial
-
Faça download dos scripts perl v4 mais recentes e descompacte-os aqui: V4 Reduza o Tempo de Inatividade do Tablespace Transportável usando Backup Incremental entre Plataformas (ID do Documento 2471245.1). Crie diretórios para descompactar os scripts e o diretório temporário.
Por Exemplo:
mkdir -p <Backup_location>/XTTS_Migration mkdir -p <Backup_location>/XTTS_Migration/XTTS_TEMP
-
Edite o arquivo
xtt.properties
no sistema de origem com a configuração específica do local. Para obter mais informações sobre os parâmetros no arquivoxtt.properties
, consulte a descrição dos parâmetros na seçãoxtt.properties
do arquivo de configuração aqui: V4 Reduza o Tempo de Inatividade do Tablespace Transportável usando Backup Incremental entre Plataformas (ID do Documento 2471245.1). Para este procedimento, apenas os parâmetros a seguir são obrigatórios. Outros são opcionais e/ou disponíveis para 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
Tarefa 3.2: Preparar Fase
-
Execute o backup no sistema de origem. No sistema de origem, faça log-in como o usuário Oracle com o ambiente (
ORACLE_HOME
eORACLE_SID
variáveis de ambiente) apontando para o banco de dados de origem, execute o backup da seguinte 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 &
-
Transfira os arquivos a seguir para o servidor de banco de dados de destino.
-
Backups criados da origem
src_scratch_location
para o destinodest_scratch_location
. -
O arquivo
res.txt
da origem$TMPDIR
para o destino$TMPDIR
.
No exemplo a seguir, scp é usado para transferir o backup level=0 criado pela etapa anterior do sistema de origem para o sistema de destino.
[oracle@source]$ scp /src_scratch_location/* oracle@dest:/dest_scratch [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
-
-
Restaure os arquivos de dados no 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 &
Tarefa 3.3: Fase de Transferência
Durante essa fase, um backup incremental é criado a partir do banco de dados de origem, transferido para o sistema de destino, convertido para o formato endian do sistema de destino e, em seguida, aplicado às cópias do arquivo de dados de destino convertidas para encaminhá-las. Esta fase pode ser executada várias vezes. Cada backup incremental sucessivo deve levar menos tempo do que o backup incremental anterior e tornará as cópias do arquivo de dados de destino mais atuais com o banco de dados de origem. Os dados que estão sendo transportados (origem) estão totalmente acessíveis durante esta fase.
Observação: Vários backups podem ser executados na origem sem aplicá-los ao destino. Os arquivos de backup e
res.txt
devem ser copiados antes que o comando '–restore' seja executado no destino.
-
Crie um backup incremental dos tablespaces que estão sendo transportados no sistema de origem.
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 &
Esta etapa criará um backup incremental para todos os tablespaces listados no arquivo
xtt.properties
. -
Transfira backups incrementais e
res.txt
para o sistema de destino. Transfira os backups incrementais (entresrc_scratch_location
edest_scratch_location
) e ores.txt
(entre$TMPDIRs
) da origem para o destino. A lista de arquivos de backup incrementais do backup atual pode ser encontrada no arquivoincrbackups.txt
no sistema de origem.Por Exemplo:
[oracle@source]$ scp `cat incrbackups.txt` oracle@dest:/dest_scratch_location [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
-
Aplique o backup incremental às cópias do arquivo de dados no sistema de destino. No sistema de destino, conectado como o usuário Oracle com o ambiente (
ORACLE_HOME
eORACLE_SID
variáveis de ambiente) apontando para o banco de dados de destino, execute a etapa de transferência de arquivos de dados da seguinte forma.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
A etapa de avanço estabelece conexão com o banco de dados de destino e aplica os backups incrementais nos arquivos de dados dos tablespaces para cada tablespace que está sendo transportado.
Observação: Embora vários backups possam ser executados na origem sem serem aplicados no destino, o arquivo
res.txt
deve ser copiado após o último backup e antes que o--restore
seja executado no destino.Repita a fase de avanço até a janela de transferência do banco de dados.
Tarefa 3.4: Fase de Backup Incremental Final
-
Altere o(s) tablespace(s) de origem para LEITURA SOMENTE no banco de dados de origem. Execute a consulta a seguir se todos os tablespaces forem transportados para o banco de dados de destino.
set lines 300 select 'alter tablespace "'||tablespace_name||'" read only;' from dba_tablespaces where contents='PERMANENT' and tablespace_name not in ('SYSTEM','SYSAUX');
-
Crie o backup incremental final dos tablespaces que estão sendo transportados no sistema de origem.
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 &
-
Transfira backups incrementais e
res.txt
para o sistema de destino.Por Exemplo:
[oracle@source]$ scp 'cat incrbackups.txt' oracle@dest:/dest_scratch_location [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
-
Aplique o último backup incremental aos arquivos de dados 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 &
Tarefa 3.5: Fase de Transporte - Exportar Metadados e Tablespaces de Plug-in para o Banco de Dados de Destino
-
Crie um diretório para armazenar os arquivos de backup de exportação.
Por Exemplo:
mkdir -p <Backup_location>/XTTS_DPUMP
Execute a consulta a seguir para criar diretório no banco de dados de origem.
create or replace directory XTTS_DUMP as '<Backup_location>/XTTS_DUMP'; grant read,write on directory XTTS_DUMP to system;
-
Preparar parfile de exportação.
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
-
Execute a exportação do datapump no banco de dados de origem.
nohup expdp system/<password>@<source_db_name> parfile= xtts_expdp.par &
-
Execute o comando a seguir no servidor de banco de dados de destino que gera o parfile de amostra para importação.
export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 $ORACLE_HOME/perl/bin/perl xttdriver.pl -e
Atualize as linhas de parfile a seguir geradas na etapa 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
O parfile de importação final deve ser semelhante a:
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>
-
Desative os seguintes parâmetros relacionados à auditoria até a conclusão da importação, conforme mencionado. 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
-
Execute a importação do datapump no banco de dados de destino.
-
Crie um diretório para copiar os arquivos de backup de exportação.
Por Exemplo:
mkdir -p <Backup_location>/XTTS_DPUMP
-
Execute o comando a seguir para criar um diretório no banco de dados de origem.
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> &
-
-
Ative os seguintes parâmetros relacionados à auditoria após a conclusão da importação.
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 os dados 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;
-
Atribua 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';
Valide os dados nos bancos de dados de origem e de destino.
Links Relacionados
Confirmações
- Autor - Pavan Yennampelli (Engenheiro Sênior de Nuvem, Oracle North America Cloud Services - NACIE)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite 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 V4 Cross Platform Transportable Tablespaces and Upgrade from 12c to 19c
G17533-01
October 2024