RMAN – Como fazer um backup consistente

Neste manual, será mostrado o passo à passo de como realizar backup consistente utilizando o Controlfile como repositório e posteriormente, em outro artigo, mostraremos como restaurar este backup.

Primeiramente, vamos criar um usuário chamado teste e uma tabela chamada teste_rman no Banco de dados para este novo usuário e também vamos popular esta tabela.

— Conectando com o usuário do Banco de Dados

# su - oracle

— Criando e exportando a variável ORACLE_SID

$ export ORACLE_SID=orcl

— Conectando no Banco de Dados

$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sun Jul 12 16:20:55 2015
Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options 

— Criando um usuário chamado “teste” no Banco de Dados

SQL> create user teste identified by teste;

User created.

— Aplicando os grants ao novo usuário

SQL> grant connect to teste;

Grant succeeded.

SQL> grant resource to teste;

Grant succeeded.

SQL> grant create table to teste;

Grant succeeded.

— Concedendo espaço à tablespace para o novo usuário

SQL>  alter user teste quota unlimited on users;

User altered.

— Conectando no Banco de Dados com o novo usuário

SQL> conn teste/teste;

Connected.

— Verificando com qual usuário estamos logados

SQL> show user;

USER is "TESTE"

— Criando uma nova tablela

SQL> create table teste_rman (col1 varchar2(10), col2 varchar2(10));

Table created.

— Populando a nova tablela

SQL> insert into teste_rman (col1,col2) values ('reg_1a', 'reg_1b');

1 row created.

SQL> insert into teste_rman (col1,col2) values ('reg_2a', 'reg_2b');

1 row created.

SQL> insert into teste_rman (col1,col2) values ('reg_3a', 'reg_3b');

1 row created.

— Verificando os registros da nova tabela

SQL> select * from teste_rman;

COL1       COL2
---------- ----------
reg_1a     reg_1b
reg_2a     reg_2b
reg_3a     reg_3b

— Desconectando do Banco de Dados

SQL> exit

Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

$

Ainda com o usuário de Banco de Dados e com a variável ORACLE_SID carregada, vamos realizar o backup full do Banco de Dados.

— Conectando ao RMAN sem utilizar um catalogo

$ rman target /

Recovery Manager: Release 12.1.0.2.0 - Production on Sun Jul 12 21:54:08 2015
Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=1411380092)

— Listando os backups já realizados neste banco via RMAN

RMAN> list backup;

using target database control file instead of recovery catalog

specification does not match any backup in the repository

Obs: Não há nenhum backup ainda

— Tentando realizar o restore

RMAN> backup database;

Starting backup at 12-JUL-15
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=28 device type=DISK

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 07/12/2015 21:54:45
RMAN-06149: cannot BACKUP DATABASE in NOARCHIVELOG mode

Obs: O RMAN está informando que o Banco de Dados está em modo NOARCHIVELOG, ou seja, o RMAN não pode garantir a consistência do backup uma vez que o Banco está aberto e não tem os archivelogs para garantir o recover do Banco de Dados “pos-restore”

— Saindo do RMAN

RMAN> exit

Recovery Manager complete.

Porém, conforme já avisado, este primeiro backup será realizado com o Banco de Dados offline, ou seja, em um estado consistente.

— Conectando ao Banco de Dados

$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sun Jul 12 22:18:56 2015
Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

— Comando executado para verificar o Database log mode

SQL> archive log list;

Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     4
Current log sequence           6

Obs: Verificamos que o Banco de Dados está em modo NOARCHIVE, nestas condições, o RMAN não autoriza que o usuário faça backup com o Banco aberto.

— Desconectando do Banco de Dados

SQL> exit

Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

— Conectando ao RMAN sem utilizar um catalogo

$ rman target /

Recovery Manager: Release 12.1.0.2.0 - Production on Sun Jul 12 22:19:22 2015
Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=1411380092)

— Fazendo o shutdown do Banco de Dados

RMAN> shutdown immediate;
using target database control file instead of recovery catalog

database closed
database dismounted

Oracle instance shut down

— Tentando fazer o backup

RMAN> backup database;

Starting backup at 14-JUL-15

using target database control file instead of recovery catalog

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 07/14/2015 01:49:29
RMAN-06403: could not obtain a fully authorized session
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3640
Additional information: 644371931

Obs: Não foi possível realizar o backup, pois o RMAN não identificou nenhuma estrutura de memória do Banco de Dados

— Inicializando o Banco de Dados em modo NOMOUNT

RMAN> startup nomount;

connected to target database (not started)

Oracle instance started

Total System Global Area     339738624 bytes
Fixed Size                     2924112 bytes
Variable Size                260047280 bytes
Database Buffers              71303168 bytes
Redo Buffers                   5464064 bytes

— Tentando fazer o backup

RMAN> backup database;

tarting backup at 12-JUL-15

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=22 device type=DISK

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 07/12/2015 22:20:35
ORA-01507: database not mounted

Obs: O RMAN indicou que o Banco de Dados não está em modo MOUNT. Será no modo MOUNT, que ele ira fazer a leitura dos controlfiles, identificando assim, o os datafiles que serão copiados para dentro do backup, por isso, o banco deve estar no modo MOUNT.

— Alterando o modo do Banco de Dados de NOMOUNT para MOUNT

RMAN> alter database mount;

Statement processed

released channel: ORA_DISK_1

— Realizando o backup full do Banco de Dados

RMAN>  backup database;

Starting backup at 12-JUL-15
allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=22 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set

input datafile file number=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf
input datafile file number=00003 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/undotbs01.dbf
input datafile file number=00006 name=/u01/app/oracle/oradata/orcl/users01.dbf

channel ORA_DISK_1: starting piece 1 at 12-JUL-15
channel ORA_DISK_1: finished piece 1 at 12-JUL-15

piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_07_12/ o1_mf_nnndf_TAG20150712T222106_bt64n3nm_.bkp tag=TAG20150712T222106 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:02:25
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
including current SPFILE in backup set

channel ORA_DISK_1: starting piece 1 at 12-JUL-15
channel ORA_DISK_1: finished piece 1 at 12-JUL-15

piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_07_12/o1_mf_ncsnf_TAG20150712T222106_bt64rrgf_.bkp tag=TAG20150712T222106 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03

Finished backup at 12-JUL-15

— Listando os backups que form realizados via RMAN

RMAN> list backup;

List of Backup Sets
===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
16      Full    1.20G      DISK        00:02:10     12-JUL-15

BP Key: 16   Status: AVAILABLE  Compressed: NO  Tag: TAG20150712T222106
Piece Name: /u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_07_12/ o1_mf_nnndf_TAG20150712T222106_bt64n3nm_.bkp

  List of Datafiles in backup set 16

  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  1       Full 2138806    12-JUL-15 /u01/app/oracle/oradata/orcl/system01.dbf
  3       Full 2138806    12-JUL-15 /u01/app/oracle/oradata/orcl/sysaux01.dbf
  4       Full 2138806    12-JUL-15 /u01/app/oracle/oradata/orcl/undotbs01.dbf
  6       Full 2138806    12-JUL-15 /u01/app/oracle/oradata/orcl/users01.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
17      Full    9.64M      DISK        00:00:03     12-JUL-15
        BP Key: 17   Status: AVAILABLE  Compressed: NO  Tag: TAG20150712T222106

        Piece Name: /u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_07_12/o1_mf_ncsnf_TAG20150712T222106_bt64rrgf_.bkp

  SPFILE Included: Modification time: 12-JUL-15

  SPFILE db_unique_name: ORCL

  Control File Included: Ckp SCN: 2138806      Ckp time: 12-JUL-15

— Alterando o modo do Banco de Dados de MOUNT para OPEN

RMAN> alter database open;

Statement processed

— Desconectando do RMAN

RMAN> exit

Recovery Manager complete.

Pronto, backup realizado com sucesso. No próximo artigo, será realizado o restore deste Banco de Dados.