Backup Recover Full

Wagner Pinheiro (e-mail) é OCP DBA Oracle 9i 10g, com atuação pela IFactory.

Caros usuários, saudações! Nesse artigo iremos abordar uma recuperação full do banco de dados. Para isso, utilizaremos o RMAN no procedimento de backup e restore.

É INADMISSÌVEL a um profissional Oracle desconhecer essa ferramenta. Se você desconhece, minha sugestão é que você procure obter informações a respeito do funcionamento dela.

É possível acessá-la de duas maneiras:

. Com catálogo
. Sem catálogo

Esse artigo se restringe ao acesso SEM USO DO CATÁLOGO, mas, sempre que possível, faça uso do catálogo ro RMAN. Para isso é necessário que, em outra máquina você possua um banco de dados para armazenar o catalogo. O colunista Rodrigo Almeida está disponibilizando um excelente material sobre o catálogo do RMAN.

Mãos a obra...

Preparação do Ambiente

A primeira coisa a fazer, é confirmar a utilização do banco de dados no modo archivelog. Para isso, utilizando o SQLPLUS, siga conforme abaixo:

C:\>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Dec 25 20:01:03 2006

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

SQL> conn / as sysdba
Connected.
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            C:\oracle\archive
Oldest online log sequence     1
Next log sequence to archive   3
Current log sequence           3
SQL>


Caso não esteja, é necessário ativá-lo, para isso, consulte o artigo publicado anteriormente.

De forma a melhor mostrar a utilização da restauração do banco de dados, iremos criar uma tabela com a seguinte estrutura:

SQL> desc estudo.insert_time;
 Name                               Null?    Type
 ---------------------------------- -------- ----
 DATA_INSERCAO                      NOT NULL DATE

SQL> select count(1) from estudo.insert_time

  COUNT(1)
----------
         0

1 row selected.


Essa tabela será utilizada para a geração de registros a cada minuto, de forma a melhor exemplificar o recover database until time.

Iremos utilizar o script abaixo para fazer a inserção do registro no banco de dados.

insert_time.sql
insert into estudo.insert_time(data_insercao)
values (sysdate);
commit;
exit;


O script abaixo, é apenas uma forma de facilitar a chamada para a inserção dos registros.

script_insert.bat
sqlplus "/ as sysdba" @c:\imasters\insert_time.sql


É preciso fazer um backup full de um momento anterior ao do provável problema.

Ex: Você precisa voltar o banco de dados da empresa para o estado em que ele se encontrava no dia 21/12/2006 às 08:00. Imaginando que seus backups são realizados todos os dias às 19:00, significa dizer que é necessário voltar o backup que foi disparado no dia 20/12/2006 às 19:00 e aplicar os archivelogs até o dia 21/12/2006 às 08:00.

Nesse momento, iremos precisar do RMAN para realizar o backup.

Para acessar o utilitário, através da console, execute:

C:\>rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Mon Dec 25 19:55:07 2006

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

connected to target database: ORCL (DBID=1125663715)

RMAN>


O comando SHOW ALL, revela informações interessantes.

RMAN> show all;

RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO     'C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SNCFORCL.ORA'; # default

RMAN>


Existem alguns pontos a serem observados na configuração do RMAN. É de muita importância o backup do controlfle e do spfile. Para isso você deve configurar o autobackup do controlfile.

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

old RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored

RMAN>


Isso automatiza o backup do controlfile, é recomendado que esteja ON.

Outra configuração importante é a localização do backup do controlfile. Para isso configure a localização do backup do controlfile.

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'C:\BACKUP
\%F';

old RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F';
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'C:\BACKUP\%F';
new RMAN configuration parameters are successfully stored


Conforme a configuração realizada no RMAN, o backup do arquivo de controlfile é composto por quatro informações:

C – Significa que o arquivo armazena o backup do controlfile e spfile

9999999999 -  É o DBID da instância, muito utilizado quando é preciso recuperar o spfile.

YYYYMMDD – Ano, mês e dia de geração do arquivo.

99 – Seqüência de geração do arquivo, inicia em 00. A seqüência é zerada a cada dia.

Confirmando as modificações no RMAN.

RMAN> SHOW ALL;

RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'C:\BACKUP\%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\S
NCFORCL.ORA'; # default


Realizando o backup full

RUN {
  ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
  ALLOCATE CHANNEL c2 DEVICE TYPE DISK;
  BACKUP AS COMPRESSED BACKUPSET
    DATABASE TAG 'DB_LEVEL0_WHOLE'
    FORMAT 'c:\backup\%d_%I_level0_%s_%p_%u.bkp'
    PLUS ARCHIVELOG TAG 'ARCHIVEDLOGS'
    FORMAT 'c:\backup\%d_%I_arch_%s_%p_%u.bkp';
  RELEASE CHANNEL c1;
  RELEASE CHANNEL c2;
}


No exemplo acima, são utilizados dois canais C1 e C2. Percebam que, dependendo das características do hardware pode ser utilizado um número maior de canais, mas isso deve ser avaliado com cuidado para não gerar uma carga excessiva no ambiente.

Após alocar os canais, foi utilizado o comando para a realização do backup, perceba também a utilização do comando COMPRESSED, é de se imaginar que esse comando irá compactar o backup. Isso irá gerar uma carga a mais no momento da recuperação, uma vez que será necessário descompactar o backup.

Ao backup dos datafiles foi data uma TAG DB_LEVEL0_WHOLE, essa é uma forma de localizar o backup utilizando comandos do RMAN. A cláusula format determina onde os backups dos datafiles devem ser armazenados.

O comando PLUS ARCHIVELOG executa o switch logfile de forma automática ao final do backup, e dessa forma armazenar os archives gerados após o início do backup.

Perceba uma ligeira diferença na cláusula format dos archivelogs, isso foi feito de forma a facilitar a identificação do tipo de arquivo armazenado.

allocated channel: c1
channel c1: sid=141 devtype=DISK

allocated channel: c2
channel c2: sid=140 devtype=DISK

Starting backup at 25-DEC-06
current log archived
channel c1: starting compressed archive log backupset
channel c1: specifying archive log(s) in backup set
input archive log thread=1 sequence=1 recid=6 stamp=610047133
input archive log thread=1 sequence=2 recid=7 stamp=610047422
input archive log thread=1 sequence=3 recid=8 stamp=610047490
input archive log thread=1 sequence=4 recid=9 stamp=610111910
channel c1: starting piece 1 at 25-DEC-06
channel c2: starting compressed archive log backupset
channel c2: specifying archive log(s) in backup set
input archive log thread=1 sequence=9 recid=1 stamp=609959261
input archive log thread=1 sequence=10 recid=2 stamp=609960115
input archive log thread=1 sequence=11 recid=3 stamp=609960185
...


Foi criada uma tarefa no windows de forma a executar o arquivo script_insert.bat a cada minuto, durante 1 hora. Isso irá gerar 60 registros na tabela INSERT_TIME.

SQL> select count(1) from estudo.insert_time

  COUNT(1)
----------
        60

1 row selected.


Agora que estamos com o ambiente preparado, vamos iniciar o processo de recuperação.

A primeira coisa a fazer é restaurar o controlfile do último backup full, ou seja, o que foi realizado algumas linhas acima.

C:\>cd \backup

C:\backup>dir
 Volume in drive C has no label.
 Volume Serial Number is D4CF-5E81

Directory of C:\backup

25/12/2006  20:55    <DIR>          .
25/12/2006  20:55    <DIR>          ..
24/12/2006  17:38         7.143.424 C-1125663715-20061224-00
25/12/2006  11:32         7.143.424 C-1125663715-20061225-00
25/12/2006  20:55         7.143.424 C-1125663715-20061225-01
24/12/2006  17:37         2.748.928 ORCL_1125663715_ARCH_15_1_0FI5P5DV.BKP
24/12/2006  17:37         2.514.944 ORCL_1125663715_ARCH_16_1_0GI5P5DV.BKP
24/12/2006  17:37         1.861.120 ORCL_1125663715_ARCH_17_1_0HI5P5E2.BKP
24/12/2006  17:38            12.800 ORCL_1125663715_ARCH_20_1_0KI5P5G2.BKP
25/12/2006  11:12         4.742.144 ORCL_1125663715_ARCH_22_1_0MI5R386.BKP
25/12/2006  11:12         4.579.840 ORCL_1125663715_ARCH_23_1_0NI5R386.BKP
25/12/2006  11:12           143.872 ORCL_1125663715_ARCH_24_1_0OI5R38B.BKP
25/12/2006  20:54         4.742.144 ORCL_1125663715_ARCH_24_1_0OI5S5B8.BKP
25/12/2006  20:54         4.579.840 ORCL_1125663715_ARCH_25_1_0PI5S5B8.BKP
25/12/2006  20:54         1.681.920 ORCL_1125663715_ARCH_26_1_0QI5S5C3.BKP
25/12/2006  11:13             7.680 ORCL_1125663715_ARCH_27_1_0RI5R3AB.BKP
25/12/2006  20:55            79.360 ORCL_1125663715_ARCH_29_1_0TI5S5E3.BKP
24/12/2006  17:38        86.245.376 ORCL_1125663715_LEVEL0_18_1_0II5P5E5.BKP
24/12/2006  17:38        38.780.928 ORCL_1125663715_LEVEL0_19_1_0JI5P5E6.BKP
25/12/2006  11:13        86.269.952 ORCL_1125663715_LEVEL0_25_1_0PI5R38E.BKP
25/12/2006  11:13        39.034.880 ORCL_1125663715_LEVEL0_26_1_0QI5R38E.BKP
25/12/2006  20:55        86.253.568 ORCL_1125663715_LEVEL0_27_1_0RI5S5C6.BKP
25/12/2006  20:55        38.912.000 ORCL_1125663715_LEVEL0_28_1_0SI5S5C6.BKP
              21 File(s)    424.621.568 bytes
               2 Dir(s)  11.710.783.488 bytes free


Fazendo o Restore do Controlfile

O controlfile possui principalmente informações referentes ao caminho dos datafiles, além de outras informações necessárias a recuperação. A primeira coisa a fazer é realizar o shutdown do banco de dados:

C:\>rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Dec 26 19:06:02 2006

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

connected to target database: ORCL (DBID=1125663715)

RMAN> shutdown immediate;

using target database control file instead of recovery catalog
database closed
database dismounted
Oracle instance shut down

RMAN>


Em seguida, inicie o banco no modo nomount:

RMAN> startup nomount;

connected to target database (not started)
Oracle instance started

Total System Global Area     293601280 bytes

Fixed Size                     1248624 bytes
Variable Size                 79692432 bytes
Database Buffers             209715200 bytes
Redo Buffers                   2945024 bytes

RMAN>


Execute a recuperação do controlfile:

RMAN> restore controlfile from 'c:\Backup\C-1125663715-20061224-00';

Starting restore at 26-DEC-06
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=157 devtype=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
output filename=C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
Finished restore at 26-DEC-06

RMAN>


Vale lembrar que, o controlfile recuperado deve ter sido gerado em um backup anterior ao problema. Quanto mais distante do momento que se deseja recuperar o banco de dados, mais arquivos de logs precisaram ser aplicados.

Agora vamos iniciar o banco no modo mount:

RMAN> startup force mount;

Oracle instance started
database mounted

Total System Global Area     293601280 bytes

Fixed Size                     1248624 bytes
Variable Size                 79692432 bytes
Database Buffers             209715200 bytes
Redo Buffers                   2945024 bytes

RMAN>


Ainda no RMAN, vamos recuperar o banco de dados até o seu estado no dia 24/12/2006 às 18:30:00.

run
{
  ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
  ALLOCATE CHANNEL c2 DEVICE TYPE DISK;
  set until time "TO_DATE('24-12-2006 18:30:00','DD-MM-YYYY HH24:MI:SS')";
  RESTORE DATABASE;
  RELEASE CHANNEL c1;
  RELEASE CHANNEL c2;
}

allocated channel: c1
channel c1: sid=156 devtype=DISK

allocated channel: c2
channel c2: sid=155 devtype=DISK

executing command: SET until clause

Starting restore at 26-DEC-06

channel c1: starting datafile backupset restore
channel c1: specifying datafile(s) to restore from backup set
restoring datafile 00002 to C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
restoring datafile 00003 to C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
restoring datafile 00005 to C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
channel c1: reading from backup piece C:\BACKUP\ORCL_1125663715_LEVEL0_19_1_0JI5
P5E6.BKP
channel c2: starting datafile backupset restore
channel c2: specifying datafile(s) to restore from backup set
restoring datafile 00001 to C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
restoring datafile 00004 to C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
restoring datafile 00006 to C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TBS_ESTUDO_01.
DBF
channel c2: reading from backup piece C:\BACKUP\ORCL_1125663715_LEVEL0_18_1_0II5
P5E5.BKP
channel c1: restored backup piece 1
piece handle=C:\BACKUP\ORCL_1125663715_LEVEL0_19_1_0JI5P5E6.BKP tag=DB_LEVEL0_WH
OLE
channel c1: restore complete, elapsed time: 00:00:49
channel c2: restored backup piece 1
piece handle=C:\BACKUP\ORCL_1125663715_LEVEL0_18_1_0II5P5E5.BKP tag=DB_LEVEL0_WH
OLE
channel c2: restore complete, elapsed time: 00:01:04
Finished restore at 26-DEC-06

released channel: c1

released channel: c2

RMAN>

Restauramos os datafiles e agora iremos fazer o recover, que nada mais é do que a aplicação dos archivelog

RMAN> RECOVER DATABASE until time "TO_DATE('24-12-2006 18:30:00','DD-MM-YYYY HH24:MI:SS')";

Starting recover at 26-DEC-06
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=156 devtype=DISK

starting media recovery

archive log thread 1 sequence 3 is already on disk as file C:\ORACLE\ARCHIVE\ARC
00003_0609963499.001
archive log filename=C:\ORACLE\ARCHIVE\ARC00003_0609963499.001 thread=1 sequence
=3
archive log filename=C:\ORACLE\ARCHIVE\ARC00004_0609963499.001 thread=1 sequence
=4
media recovery complete, elapsed time: 00:00:04
Finished recover at 26-DEC-06

RMAN>


Agora iremos abrir o banco com RESET LOGS. O comando ALTER DATABASE OPEN RESETLOGS, irá criar os arquivos de redologs, de acordo com a configuração armazenada no controlfile.

RMAN> alter database open resetlogs;

database opened

RMAN>

select to_char(max(data_insercao),'DD-MM-YYYY HH24:MI:SS')
 from estudo.insert_time;

TO_CHAR(MAX(DATA_IN
-------------------
24-12-2006 18:29:00

1 row selected.


Caso você deseje se aproximar um pouco mais do momento do problema, precisará restaurar o controlfile novamente, restaurar os datafiles, e recuperar o banco informando uma hora mais próxima.

Vamos voltar o banco ao estado em que ele se encontrava as 18:45 do dia 24/12/2006.

RMAN> shutdown immediate;

database closed
database dismounted
Oracle instance shut down

RMAN>

RMAN> startup nomount;

connected to target database (not started)
Oracle instance started

Total System Global Area     293601280 bytes

Fixed Size                     1248624 bytes
Variable Size                 79692432 bytes
Database Buffers             209715200 bytes
Redo Buffers                   2945024 bytes

RMAN>


Restaure o controlfile mais próximo.

RMAN> restore controlfile from 'c:\Backup\C-1125663715-20061224-00';

Starting restore at 26-DEC-06
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=157 devtype=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output filename=C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
Finished restore at 26-DEC-06

RMAN>


Inicie o banco no modo mount.

RMAN> startup force mount;

Oracle instance started
database mounted

Total System Global Area     293601280 bytes

Fixed Size                     1248624 bytes
Variable Size                 79692432 bytes
Database Buffers             209715200 bytes
Redo Buffers                   2945024 bytes

RMAN>


Faça o restore dos datafiles.

run
{
  ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
  ALLOCATE CHANNEL c2 DEVICE TYPE DISK;
  set until time "TO_DATE('24-12-2006 18:45:00','DD-MM-YYYY HH24:MI:SS')";
  RESTORE DATABASE;
  RELEASE CHANNEL c1;
  RELEASE CHANNEL c2;
}

allocated channel: c1
channel c1: sid=156 devtype=DISK

allocated channel: c2
channel c2: sid=155 devtype=DISK

executing command: SET until clause

Starting restore at 26-DEC-06

channel c1: starting datafile backupset restore
channel c1: specifying datafile(s) to restore from backup set
restoring datafile 00002 to C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
restoring datafile 00003 to C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
restoring datafile 00005 to C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
channel c1: reading from backup piece C:\BACKUP\ORCL_1125663715_LEVEL0_19_1_0JI5
P5E6.BKP
channel c2: starting datafile backupset restore
channel c2: specifying datafile(s) to restore from backup set
restoring datafile 00001 to C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
restoring datafile 00004 to C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
restoring datafile 00006 to C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TBS_ESTUDO_01.
DBF
channel c2: reading from backup piece C:\BACKUP\ORCL_1125663715_LEVEL0_18_1_0II5
P5E5.BKP
channel c1: restored backup piece 1
piece handle=C:\BACKUP\ORCL_1125663715_LEVEL0_19_1_0JI5P5E6.BKP tag=DB_LEVEL0_WH
OLE
channel c1: restore complete, elapsed time: 00:00:48
channel c2: restored backup piece 1
piece handle=C:\BACKUP\ORCL_1125663715_LEVEL0_18_1_0II5P5E5.BKP tag=DB_LEVEL0_WH
OLE
channel c2: restore complete, elapsed time: 00:01:03
Finished restore at 26-DEC-06

released channel: c1

released channel: c2

RMAN>


Faça o recover até o momento desejado.

RMAN> RECOVER DATABASE until time "TO_DATE('24-12-2006 18:45:00','DD-MM-YYYY HH24:MI:SS')";

Starting recover at 26-DEC-06
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=156 devtype=DISK

starting media recovery

archive log thread 1 sequence 3 is already on disk as file C:\ORACLE\ARCHIVE\ARC
00003_0609963499.001
archive log filename=C:\ORACLE\ARCHIVE\ARC00003_0609963499.001 thread=1 sequence
=3
archive log filename=C:\ORACLE\ARCHIVE\ARC00004_0609963499.001 thread=1 sequence
=4
media recovery complete, elapsed time: 00:00:04
Finished recover at 26-DEC-06

Abra o banco com resetlogs.

RMAN> alter database open resetlogs;

database opened

RMAN>


Fazendo o mesmo select feito anterior, teremos:

select to_char(max(data_insercao),'DD-MM-YYYY HH24:MI:SS')
from estudo.insert_time

TO_CHAR(MAX(DATA_IN
-------------------
24-12-2006 18:44:00

1 row selected.


Acredito que demonstramos uma boa utilização do RMAN em processos de recover point in time.

Vale lembrar que em bases relativamente grandes é preciso ter um certo cuidado em relação ao tempo informado para a recuperação. Imagine você restaurar 300GB de datafiles, e depois de 2, 3 ou 4 horas executar o comando recover com uma hora posterior ao momento desejado, você terá que fazer todo o processo novamente e talvez a empresa não possua mais janela para realizar a operação.

Espero ter ajudado um pouco na descoberta do RMAN, uma ferramenta excelente, e muito útil.