You are on page 1of 21

1

BACKUP AS COPY
WITH RMAN

Anthony Baldavia
anthony.baldavia@dbacorp.com.br
2

Neste artigo falaremos sobre uma feature


do RMAN que existe no Oracle database

DESCRIÇÃO desde a versão 10G e é usada para


realizarmos cópia de uma base de dados
para outro disco (fileSystem) ou entre Disk
Group (ASM).
3

INTRODUÇÃO
O Oracle Database é repleto de ferramentas muito úteis que nem todos
têm conhecimento sobre cada uma; uma delas é o RMAN, uma ferramenta
importante para backup, restore e até mesmo para migração de discos, seja
em ASM ou FILESYSTEM. Essa feature é conhecida como BACKUP AS COPY.
Podemos usá-la de várias maneiras, como backup de apenas um datafile ou
também para um banco todo.

Uma breve explanação do BACKUP AS COPY.


Por padrão, o comando BACKUP no RMAN cria BackupSet - cada um dos
quais é um ou mais BackupPiece. Um arquivo de dados pode abranger
BackupPieces, mas não pode abranger um BackupSet. No entanto, o RMAN
permite outro método - BACKUP AS COPY. Isso é semelhante aos “User
Managed Backups” criados com comandos do SO - exceto que o ALTER
TABLESPACE | DATABASE BEGIN BACKUP comando não tem de ser emitido.
O comando BACKUP AS COPY cria uma cópia byte-byte de cada arquivo
de dados, na medida em que os blocos são modificados por gravações
simultâneas no arquivo de dados. Se um arquivo de dados ativo está
corrompido, o DBA pode escolher SWITCH TO COPY em vez de ter que
restaurar a cópia de arquivo de dados. Assim, um interruptor pode ser uma
operação rápida. Obviamente, nós DBAs devemos planejar com cuidado
onde o Oracle criará essas cópias, se ele pretende trocar mais tarde ele não
manteria uma cópia de arquivo de dados em um alvo de armazenamento não
protegido [RAID ou ASM].
4

BACKUP AS COPY ENTRE DISCO DO ASM


Essa feature do RMAN pode ser utilizada com várias opções, o passo a passo a seguir mostrará a
migração de um banco de dados para outro disco do ASM, por exemplo, temos um disco do ASM que
não está em um storage e queremos mudar os dados para o disco apresentado no storage. Nesse caso,
não precisamos realizar um backup e restore, basta usar o backup as copy.

Vejamos:
Primeiramente vamos criar um disk group novo, dentro do ASM.

SQL> create diskgroup DATA2 normal redundancy failgroup datafg01 disk ‘/dev/rhdisk9’ failgroup
datafg02 disk ‘/dev/rhdisk14’;

Diskgroup created.

SQL> select state,name,type from v$asm_diskgroup;

STATE NAME TYPE


----------- ------------------------------ ------
MOUNTED DATA1 EXTERN
MOUNTED RMAN1 EXTERN
MOUNTED SYS1 EXTERN
MOUNTED DATA2 NORMAL

Quando usamos o backup as copy, no nosso caso temos que criar um backup do controlfile, pois iremos mudar
o caminho dos datafiles.
5

export ORACLE_HOME=/opt/oracle/product/11.2.0.4/db1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=ORCL

[oracle@db01 logs]$ sqlplus “/as sysdba”

SQL*Plus: Release 11.2.0.4.0 Production on Sun OCT 09:47:14 2016

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Release 11.2.0.4.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL>

SQL> show parameter control

NAME TYPE VALUE


------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string +SYS1/db/controlfile/current.257.623341273

SQL> alter database backup controlfile to ‘+DATA2’;

Database altered.

Alteramos no spfile o caminho do novo controfile, que será no novo disk group.
6

SQL> alter system set control_files=’+DATA2\db\CONTROLFILE\Backup.256.627662879’ SCOPE=SPFILE;

System altered.

Por segurança, criamos o pfile por meio do spfile usado atualmente e alteramos os caminhos apontando para o
novo disco, conforme abaixo.

SQL> create pfile from spfile;

File created.

Modify pfile with these parameters:

I have already created 2 ASM diskgroups DATA and FLASH.

*.control_files=(+DATA2)
*.db_recovery_file_dest=DATA2
*.db_recovery_file_dest_size=2147483648
*.db_create_file_dest=+DATA
*.db_create_online_log_dest_1=+DATA2
*.db_create_online_log_dest_2=+DATA2
7

Podemos por segurança realizar um backup do controfile, pois iremos realizar um restore a seguir.

[oracle@sporlinhfora01 ~]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Sun OCT 09:45:14 2016

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

connected to target database: CONCH (DBID=275268577)

RMAN> backup current controlfile format ‘/home/oracle/oradata/db10g/control01.ctl’;

Starting backup at 2016-11-01 10:01:31


using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1526 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
channel ORA_DISK_1: starting piece 1 at 2016-11-01 10:01:35
channel ORA_DISK_1: finished piece 1 at 2016-11-01 10:01:36
piece handle=’/home/oracle/oradata/db10g/control01.ctl’; tag=TAG20161101T100132 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2016-10-30 09:46:36
8

Feito isso, podemos “desligar” o banco de dados.

[oracle@db01]$ sqlplus “/as sysdba”

SQL*Plus: Release 11.2.0.4.0 Production on Sun OCT 30 09:48:54 2016

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Release 11.2.0.4.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL>
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
9

Feito o shutdown do banco de dados, conectamos no RMAN e iniciamos o banco em modo mount para
restaurarmos o backup que realizamos do controlfile.

[oracle@ db01]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Sun OCT 30 09:58:06 2016

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

connected to target database: CONC (DBID=1662551701)

RMAN> startup nomount

Oracle instance started

Total System Global Area 167772160 bytes

Fixed Size 1218316 bytes


Variable Size 83888372 bytes
Database Buffers 79691776 bytes
Redo Buffers 2973696 bytes

RMAN> restore controlfile from ‘/home/oracle/oradata/db10g/control01.ctl’;

Starting restore at 30-OCT-06


using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=157 devtype=DISK

channel ORA_DISK_1: copied control file copy


output filename=+DATA2/db10g/controlfile/backup.256.596369129
output filename=
Finished restore at 30-OCT-06
10

Após restaurar o backup do controlfile para o novo disco, podemos alterar o banco de dados para o modo “mount”.

RMAN> startup mount

database is already started


database mounted
released channel: ORA_DISK_1

RMAN> configure device type disk parallelism 4;

new RMAN configuration parameters:


CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;
new RMAN configuration parameters are successfully stored

Após essa etapa, podemos realizar o backup as copy apontando para o novo disco.

RMAN> BACKUP AS COPY DATABASE FORMAT ‘+DATA2’;

Starting backup at 21-JUL-06


allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=152 devtype=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: sid=151 devtype=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: sid=150 devtype=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: sid=149 devtype=DISK
channel ORA_DISK_1: starting datafile copy
input datafile fno=00001 name=/home/oracle/oradata/orcl/system01.dbf
channel ORA_DISK_2: starting datafile copy
input datafile fno=00003 name=/home/oracle/oradata/orcl/sysaux01.dbf
11

channel ORA_DISK_3: starting datafile copy


input datafile fno=00002 name=/home/oracle/oradata/orcl/undotbs01.dbf
channel ORA_DISK_4: starting datafile copy
input datafile fno=00004 name=/home/oracle/oradata/orcl/users01.dbf
output filename=+DATA2/orcl/datafile/undotbs1.259.596369341 tag=TAG20060721T100858 recid=2
stamp=596369352
channel ORA_DISK_3: datafile copy complete, elapsed time: 00:00:16
channel ORA_DISK_3: starting datafile copy
copying current control file
output filename=+DATA2/orcl/datafile/users.260.596369341 tag=TAG20060721T100858 recid=1
stamp=596369350
channel ORA_DISK_4: datafile copy complete, elapsed time: 00:00:20
channel ORA_DISK_4: starting full datafile backupset
channel ORA_DISK_4: specifying datafile(s) in backupset
output filename=+DATA2/orcl/controlfile/backup.261.596369361 tag=TAG20060721T100858 recid=3
stamp=596369364
channel ORA_DISK_3: datafile copy complete, elapsed time: 00:00:06
including current SPFILE in backupset
channel ORA_DISK_4: starting piece 1 at 21-JUL-06
channel ORA_DISK_4: finished piece 1 at 21-JUL-06
piece handle=+DATA2/orcl/backupset/2006_07_21/nnsnf0_tag20060721t100858_0.262.596369369
tag=TAG20060721T100858 comment=NONE
channel ORA_DISK_4: backup set complete, elapsed time: 00:00:10
output filename=+DATA2/orcl/datafile/sysaux.258.596369341 tag=TAG20060721T100858 recid=4
stamp=596369390
channel ORA_DISK_2: datafile copy complete, elapsed time: 00:01:05
output filename=+DATA2/orcl/datafile/system.257.596369339 tag=TAG20060721T100858 recid=5
stamp=596369414
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:21
Finished backup at 30-OCT-06

Finalizado o processo de backup as copy, precisamos realizar o switch no database.


12

RMAN> SWITCH DATABASE TO COPY;

datafile 1 switched to datafile copy “+DATA2/orcl/datafile/system.257.596369339”


datafile 2 switched to datafile copy “+DATA2/orcl/datafile/undotbs1.259.596369341”
datafile 3 switched to datafile copy “+DATA2/orcl/datafile/sysaux.258.596369341”
datafile 4 switched to datafile copy “+DATA2/orcl/datafile/users.260.596369341”

RMAN> alter database open;

database opened

RMAN> exit

Recovery Manager complete.

Concluímos o processo de backup as copy do banco de dados, porém como em qualquer restore, a tablespace temporária
não é criada, então devemos criá-la. Isso acontece pois a tablespace temporária não fica localizada no controlfile.

[oracle@db01]$ sqlplus “/as sysdba”

SQL*Plus: Release 11.2.0.4.0 Production on Sun OCT 30 21:48:54 2016

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Release 11.2.0.4.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL>
SQL> select name, bytes from v$tempfile;

NAME BYTES
------------------------------------------- --------------------------------- /home/oracle/ora-
data/db10g/temp01.dbf 20971520
13

SQL> create temporary tablespace temp1 tempfile SIZE 100M extent management local uniform size 1M;

Tablespace created.

SQL> alter database default temporary tablespace temp1;

Database altered.

SQL> drop tablespace temp including contents;

Tablespace dropped.

SQL> create temporary tablespace temp tempfile SIZE 100M extent management local uniform size 1M;

Tablespace created.

SQL> alter database default temporary tablespace temp;

Database altered.

SQL> drop tablespace temp1 including contents;

Tablespace dropped.

SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
+DATA2/orcl/tempfile/temp.264.596370217

Posso dizer que esta etapa é opcional, pois os redos serão criados no caminho correto, ou seja, no novo disco criado.
Mas vamos recriá-los manualmente.
14

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
+DATA2/db10g/onlinelog/group_3.259.596373619
+DATA2/db10g/onlinelog/group_2.258.596373615
+DATA2/db10g/onlinelog/group_1.261.596373613
+DATA2/db10g/onlinelog/group_4.257.596373293
+DATA2/db10g/onlinelog/group_5.260.596373609

SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

Vamos deletar os redos usando o RMAN para limpar também no controlfile.

[oracle@ db01]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Sun OCT 30 22:32:06 2016

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

connected to target database: CONC (DBID=1662551701)

RMAN>
RMAN> run {
2> DELETE COPY OF DATABASE;
3> }

using target database control file instead of recovery catalog


allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=134 devtype=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: sid=151 devtype=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: sid=153 devtype=DISK
15

allocated channel: ORA_DISK_4


channel ORA_DISK_4: sid=138 devtype=DISK

List of Datafile Copies


Key File S Completion Time Ckp SCN Ckp Time Name
------- ---- - --------------- ---------- --------------- ----
6 1 A 30-OCT-06 461254 21-JUL-06 /home/oracle/oradata/db10g/system01.dbf
7 2 A 21-JUL-06 461254 21-JUL-06 /home/oracle/oradata/db10g/undotbs01.
dbf
8 3 A 21-JUL-06 461254 21-JUL-06 /home/oracle/oradata/db10g/sysaux01.dbf
9 4 A 21-JUL-06 461254 21-JUL-06 /home/oracle/oradata/db10g/users01.dbf

Do you really want to delete the above objects (enter YES or NO)? YES
deleted datafile copy
datafile copy filename=/home/oracle/oradata/db10g/system01.dbf recid=6 stamp=596369439
deleted datafile copy
datafile copy filename=/home/oracle/oradata/db10g/undotbs01.dbf recid=7 stamp=596369439
deleted datafile copy
datafile copy filename=/home/oracle/oradata/db10g/sysaux01.dbf recid=8 stamp=596369440
deleted datafile copy
datafile copy filename=/home/oracle/oradata/db10g/users01.dbf recid=9 stamp=596369440
Deleted 4 objects

RMAN> exit

Após a finalização de todas essas etapas, concluímos nosso processo de migração de filesystem para ASM usando o
backup as copy database.
16

[oracle@db01]$ sqlplus “/as sysdba”

SQL*Plus: Release 11.2.0.4.0 Production on Sun OCT 30 22:40:08 2016

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Release 11.2.0.4.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL>
SQL>select name, open_mode from v$database;

NAME OPEN_MODE
========= ====================
ORCL READ WRITE
17

CURIOSIDADE SOBRE O PORQUE DE


UM BACKUP
O principal objetivo de backup é proteger seus dados contra desastres e falhas
de hardware ou falha lógica. No entanto, ter apenas um backup não fornece
o nível necessário de segurança. Seu backup primário pode ser destruído
juntamente com seus dados de produção, deixando você sem backup para
restaurar.

Os especialistas de backup recomendam que para construir um plano bem-


sucedido de proteção de dados e recuperação de desastre, você deve seguir a
regra 3-2-1, onde:
3: Você deve ter pelo menos três cópias de seus dados: os dados de
produção originais e dois backups.
2: Você deve usar pelo menos dois tipos diferentes de mídia para armazenar
as cópias de seus dados, por exemplo, disco local e nuvem.
1: Você deve manter pelo menos um backup fora do site, por exemplo,
na nuvem ou em um site remoto. Assim, você deve ter pelo menos dois
backups e eles devem estar em locais diferentes. Se um desastre extrair
seus dados de produção e backup local, você ainda pode recuperar de seu
backup offsite.

Enfim, o backup é extremamente importante, porém um processo que muitos


DBA’s esquecem é realizar periodicamente um teste de desastre recover, ou seja,
vamos pegar nosso backup e usá-lo para restaurar em outro servidor, assim
podemos definir o tempo de restauração em um desastre e também garantir
que o backup que estamos fazendo, copiando para outros locais, está integro e
funcional, o que nos servirá se o backup não estiver íntegro.
18

Com base no que vimos neste artigo, podemos


concluir que a ferramenta RMAN é muito mais
do que uma simples ferramenta de backup. Com
ela, podemos fazer muitas coisas que facilita
nossa vida de DBA, e também garantimos nosso

CONCLUSÃO
backup ao qual é extremamente importante, pois
nós sabemos que um banco sem backup não é
nada seguro.

Vimos que para migrar um banco de dados, seja


de ASM para ASM ou ASM para filesystem, é
um processo simples, basta termos atenção no
processo e realizar os passos descritos.
19

LINKS PARA SABER MAIS

Links
https://docs.oracle.com/cd/B10501_01/server.920/a96566/rcmbackp.htm
https://docs.oracle.com/cd/E11882_01/backup.112/e10642/rcmbckba.htm#BRADV8003

Referências e Bibliografia
Autor: Oracle.com
Há 18 anos, a DBACorp atua na área de TI e garante
resultados reais para os seus investimentos. Afinal,
95% dos nossos clientes aprovam e recomendam os
serviços que oferecemos.

Temos soluções sob medida para os mais diversos


projetos em banco de dados, infraestrutura e cloud
computing.

Oferecemos serviços como suporte 24x7x365,


alocação de profissionais, venda de licenças,
monitoração proativa, alta disponibilidade e
sustentação.

Tudo isso com equipes certificadas de DBAs e


de infraestrutura, prontas para atender todos os
segmentos e tamanhos de empresas.

E para garantir ainda mais a qualidade, a DBACorp


é parceira dos principais players do mercado, como
Oracle, Microsoft, Amazon Web Services e WMware.

DBACorp. Inteligência aplicada a TI e ao seu negócio.


ESCRITÓRIOS

São Paulo - SP
R. Samuel Morse, 74, Conj. 21
Anthony Baldavia Brooklin Novo - CEP 04576-060
anthony.baldavia@dbacorp.com.br +55 11 2348-4699

Rio de Janeiro - RJ
Av. Rio Branco, 1 - 12º andar
Centro - CEP 20090-003
+55 21 2588-8150

REDES SOCIAIS