A utilização de ambientes Cloud está cada dia mais comum e com isso as demandas de atividades relacionadas a esta tecnologia também.
O objetivo deste artigo é demostrar o processo de restauração de um backup rman de um ambiente Oracle Database Cloud Service em um novo servidor, seja ele outro ambiente cloud, ou um ambiente on premise.
Nos ambientes Oracle Database Cloud Service, os backups são criptografados através do TDE (Transparent Data Encryption) e por isso o processo de restore em um novo ambiente se difere um pouco do processo tradicional.
É importante sempre realizar um backup do wallet file ewallet.p12, pois sem o mesmo não será possível realizar a restauração.
No cenário abaixo, estaremos restaurando um backup físico de um ambiente Oracle Database Cloud Service na versão 11.2.0.4 (PSU 11.2.0.4.180417) em uma maquina virtual também a versão 11.2.0.4 (PSU 11.2.0.4.180417). É importante que PSU do banco onde o restore estará sendo realizado esteja na versão 11.2.0.4.180417 ou superior devido a necessidade de utilização do TDE.
- Host1 - srvcpsdb01 - Oracle Database Cloud Service.
- Host2 - ora11g - Maquina virtual.
O primeiro passo é transferir os arquivos para o servidor onde o restore será realizado. Devemos transferir o backup rman e o wallet file.
Para localizar o wallet file basta executar a consulta abaixo no ambiente cloud (srvcpsdb01), que a mesma mostrará o caminho onde o mesmo foi gerado.
SQL> set lines 210
SQL> col WRL_PARAMETER for a60
SQL> select * from v$encryption_wallet;
WRL_TYPE WRL_PARAMETER STATUS
-------------------- ------------------------------------------------------------ ------------------
file /u01/app/oracle/admin/cpsprd/tde_wallet OPEN
SQL> !
[oracle@srvcpsdb01 ~]$ ls -ltr /u01/app/oracle/admin/cpsprd/tde_wallet*
total 8
-rw-------. 1 oracle oinstall 2845 Feb 6 17:15 ewallet.p12
-rw-------. 1 oracle oinstall 2923 Feb 6 17:15 cwallet.sso
[oracle@srvcpsdb01 ~]$
Como podemos ver acima, o arquivo ewallet.p12 esta no diretório /u01/app/oracle/admin/cpsprd/tde_wallet, basta copia-lo ao servidor onde estaremos restaurando o backup (ora11g).
No servidor ora11g, os backups do rman e do wallet foram copiados para o diretório /u01/orabackup/bkpcps.
Banco=lamimtst-> hostname
ora11g
Banco=lamimtst->
Banco=lamimtst-> pwd
/u01/orabackup/bkpcps
Banco=lamimtst-> ls -ltr
total 3638008
-rw-r----- 1 oracle oinstall 98304 Feb 8 21:10 spf_CPSPRD_152_1_999658386.spf
-rw-r----- 1 oracle oinstall 1179648 Feb 8 21:10 df_CPSPRD_150_1_999658379.dbf
-rw-r----- 1 oracle oinstall 3721166848 Feb 8 21:10 df_CPSPRD_149_1_999657904.dbf
-rw-r----- 1 oracle oinstall 1179648 Feb 8 21:10 cf_CPSPRD_153_1_999658388.ctl
-rw-r----- 1 oracle oinstall 1691648 Feb 8 21:10 arch_CPSPRD_151_1_999658383.arc
-rw-r--r-- 1 oracle oinstall 2845 Feb 10 14:30 ewallet.p12
Banco=lamimtst->
Para configurar a autenticação do wallet seguiremos os passos abaixo:
- Criar a estrutura de diretório do mesmo e copia-lo.
Banco=lamimtst-> mkdir -p /u01/app/oracle/admin/cpsprd/tde_wallet
Banco=lamimtst-> cp /u01/orabackup/bkpcps/ewallet.p12 /u01/app/oracle/admin/cpsprd/tde_wallet
Banco=lamimtst-> ls -ltr /u01/app/oracle/admin/cpsprd/tde_wallet/*
-rw-r--r-- 1 oracle oinstall 2845 Feb 10 11:24 /u01/app/oracle/admin/cpsprd/tde_wallet/ewallet.p12
- Modificar o arquivo sqlnet.ora especificando o caminho do wallet, conforme abaixo.
Banco=lamimtst-> vim $ORACLE_HOME/network/admin/sqlnet.ora
ENCRYPTION_WALLET_LOCATION =
(SOURCE = (METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /u01/app/oracle/admin/cpsprd/tde_wallet)
)
)
- Por último, vamos executar o utilitário orapki para gerar o wallet auto-login.
Banco=lamimtst-> orapki wallet create -wallet /u01/app/oracle/admin/cpsprd/tde_wallet -pwd "senha" -auto_login
Oracle PKI Tool : Version 11.2.0.4.0 - Production
Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
Banco=lamimtst->
Concluídas estas etapas já é possível prosseguir normalmente com o restore/recover do ambiente no novo servidor.
Conectar no rman, setar o dbid e restaurar o spfile.
Banco=lamimtst-> export ORACLE_SID=cpsprd
Banco=lamimtst-> rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Sat Feb 9 16:43:07 2019
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database (not started)
RMAN> set DBID=2940662000
executing command: SET DBID
RMAN> startup nomount;
startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initcpsprd.ora'
starting Oracle instance without parameter file for retrieval of spfile
Oracle instance started
Total System Global Area 1068937216 bytes
Fixed Size 2260088 bytes
Variable Size 281019272 bytes
Database Buffers 780140544 bytes
Redo Buffers 5517312 bytes
RMAN> restore spfile from '/u01/orabackup/bkpcps/spf_CPSPRD_152_1_999658386.spf';
Starting restore at 09-FEB-19
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=19 device type=DISK
channel ORA_DISK_1: restoring spfile from AUTOBACKUP /u01/orabackup/bkpcps/spf_CPSPRD_152_1_999658386.spf
channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete
Finished restore at 09-FEB-19
RMAN>
Restaurar o controlfile e montar a base
RMAN> restore controlfile from '/u01/orabackup/bkpcps/cf_CPSPRD_153_1_999658388.ctl';
Starting restore at 09-FEB-19
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=19 device type=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:04
output file name=/u02/app/oracle/oradata/cpsprd/control01.ctl
output file name=/u01/app/oracle/oradata/cpsprd/control02.ctl
Finished restore at 09-FEB-19
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
RMAN>
Realizar o restore/recover e abrir a base com open resetlogs.
RMAN> restore database;
Starting restore at 10-FEB-19
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1 device type=DISK
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u02/app/oracle/oradata/cpsprd/system01.dbf
channel ORA_DISK_1: restoring datafile 00002 to /u02/app/oracle/oradata/cpsprd/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00003 to /u02/app/oracle/oradata/cpsprd/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u02/app/oracle/oradata/cpsprd/users01.dbf
channel ORA_DISK_1: restoring datafile 00005 to /u02/app/oracle/oradata/cpsprd/eximioti01.dbf
channel ORA_DISK_1: restoring datafile 00006 to /u02/app/oracle/oradata/cpsprd/protheus_data01.dbf
channel ORA_DISK_1: restoring datafile 00007 to /u02/app/oracle/oradata/cpsprd/protheus_index01.dbf
channel ORA_DISK_1: restoring datafile 00008 to /u02/app/oracle/oradata/cpsprd/protheus_data02.dbf
channel ORA_DISK_1: restoring datafile 00009 to /u02/app/oracle/oradata/cpsprd/protheus_index02.dbf
channel ORA_DISK_1: restoring datafile 00010 to /u02/app/oracle/oradata/cpsprd/protheus_data03.dbf
channel ORA_DISK_1: reading from backup piece /u01/orabackup/bkpcps/df_CPSPRD_149_1_999657904.dbf
channel ORA_DISK_1: piece handle=/u01/orabackup/bkpcps/df_CPSPRD_149_1_999657904.dbf tag=BACKUPDATABASEFULLDIARIO
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:14:05
Finished restore at 10-FEB-19
RMAN> recover database;
Starting recover at 10-FEB-19
using channel ORA_DISK_1
starting media recovery
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=86
channel ORA_DISK_1: reading from backup piece /u01/orabackup/bkpcps/arch_CPSPRD_151_1_999658383.arc
channel ORA_DISK_1: piece handle=/u01/orabackup/bkpcps/arch_CPSPRD_151_1_999658383.arc tag=BACKUPARCHIVELOGDIARIO
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=/u02/cpsprd/cpsprd_1_86_999536648.arc thread=1 sequence=86
unable to find archived log
archived log thread=1 sequence=87
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 02/10/2019 14:19:36
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 87 and starting SCN of 3705846
RMAN>
RMAN> alter database open resetlogs;
using target database control file instead of recovery catalog
RMAN> exit
Recovery Manager complete.
Banco=lamimtst-> sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sun Feb 10 15:04:15 2019
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SQL> select open_mode, database_role from v$database;
OPEN_MODE DATABASE_ROLE
-------------------- ----------------
READ WRITE PRIMARY
SQL>
Por hoje era isso.
:)
Parabéns pelo artigo, até estranhei quando fui procurar sobre o assunto e achei em português haha
ResponderExcluir:)
ExcluirParabénss, estava procurando como adicionar um certificado ao wallet e acabei lendo sua matéria por curiosidade.
ResponderExcluirBom poder ajudar :)
Excluir