Pular para o conteúdo principal

Restore e recover Oracle usando backups incremental

No ambiente de testes verifiquei algo que não sabia. Um backup incremental Level 1 , diferencial ou cumulativo não é usado no restore e sim no recover. Um backup level 1 é como se fosse um pacote de archives.

No momento do recover se o Oracle encontrar uma peça de backup incremental level 1 que contenha todas as alterações necessária para recuperação da base,
ele da prioridade ao backup incremental deixando os archives em segundo plano. Baseado nisso, podemos dizer que é como se os level 1 fossem uma segurança a mais no momento do recover.

Para comprovar veja os passos que fiz abaixo.

Primeiro executo um backup incremental level 0

RMAN> backup incremental level 0 database;

Starting backup at 21-JAN-11
using channel ORA_DISK_1
channel ORA_DISK_1: starting incremental level 0 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/CANSADA/datafile/o1_mf_system_6mm2dr9k_.dbf
input datafile file number=00002 name=/u01/app/oracle/oradata/CANSADA/datafile/o1_mf_sysaux_6mm2drbp_.dbf
input datafile file number=00005 name=/u01/app/oracle/oradata/CANSADA/datafile/o1_mf_teste_6mm3vnp7_.dbf
input datafile file number=00003 name=/u01/app/oracle/oradata/CANSADA/datafile/o1_mf_undotbs1_6mm2drc5_.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/CANSADA/datafile/o1_mf_users_6mm2drcy_.dbf
channel ORA_DISK_1: starting piece 1 at 21-JAN-11
channel ORA_DISK_1: finished piece 1 at 21-JAN-11
piece handle=/u01/app/oracle/flash_recovery_area/CANSADA/backupset/2011_01_21/o1_mf_nnnd0_TAG20110121T161926_6mmq1z2m_.bkp tag=TAG20110121T161926 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15
Finished backup at 21-JAN-11

Starting Control File and SPFILE Autobackup at 21-JAN-11
piece handle=/u01/app/oracle/flash_recovery_area/CANSADA/autobackup/2011_01_21/o1_mf_s_741025182_6mmq2gsb_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 21-JAN-11


Depois faço alguns inserts na tabela teste que fica armazenada na tablespace teste


SQL> insert into teste.teste values ('00000000000000000000000000');

1 row created.

SQL> /

1 row created.

SQL> /

1 row created.

SQL> /

1 row created.

SQL> /

1 row created.

SQL> /

1 row created.

SQL> /

1 row created.

SQL> commit;

Commit complete.


SQL> alter system switch logfile;

System altered.



Em seguida executo um backup incremental Level 1


RMAN> backup incremental level 1 database;

Starting backup at 21-JAN-11
using channel ORA_DISK_1
channel ORA_DISK_1: starting incremental level 1 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/CANSADA/datafile/o1_mf_system_6mm2dr9k_.dbf
input datafile file number=00002 name=/u01/app/oracle/oradata/CANSADA/datafile/o1_mf_sysaux_6mm2drbp_.dbf
input datafile file number=00005 name=/u01/app/oracle/oradata/CANSADA/datafile/o1_mf_teste_6mm3vnp7_.dbf
input datafile file number=00003 name=/u01/app/oracle/oradata/CANSADA/datafile/o1_mf_undotbs1_6mm2drc5_.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/CANSADA/datafile/o1_mf_users_6mm2drcy_.dbf
channel ORA_DISK_1: starting piece 1 at 21-JAN-11
channel ORA_DISK_1: finished piece 1 at 21-JAN-11
piece handle=/u01/app/oracle/flash_recovery_area/CANSADA/backupset/2011_01_21/o1_mf_nnnd1_TAG20110121T162155_6mmq6my9_.bkp tag=TAG20110121T162155 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15
Finished backup at 21-JAN-11

Starting Control File and SPFILE Autobackup at 21-JAN-11
piece handle=/u01/app/oracle/flash_recovery_area/CANSADA/autobackup/2011_01_21/o1_mf_s_741025330_6mmq730l_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 21-JAN-11



Coloco a tablespace teste em modo offline

alter tablespace teste offline;

Tablespace altered.


Executo um restore da tablespace, nesse momento só é usado o backup Level 0 para o restore

RMAN> restore tablespace teste;

Starting restore at 21-JAN-11
using channel ORA_DISK_1

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 00005 to /u01/app/oracle/oradata/CANSADA/datafile/o1_mf_teste_6mm3vnp7_.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/CANSADA/backupset/2011_01_21/o1_mf_nnnd0_TAG20110121T161926_6mmq1z2m_.bkp
channel ORA_DISK_1: piece handle=/u01/app/oracle/flash_recovery_area/CANSADA/backupset/2011_01_21/o1_mf_nnnd0_TAG20110121T161926_6mmq1z2m_.bkp tag=TAG20110121T161926
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 21-JAN-11


No momento do recover é utilizado o backup Level 1

RMAN> recover tablespace teste;

Starting recover at 21-JAN-11
using channel ORA_DISK_1
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00005: /u01/app/oracle/oradata/CANSADA/datafile/o1_mf_teste_6mm3vnp7_.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/CANSADA/backupset/2011_01_21/o1_mf_nnnd1_TAG20110121T162155_6mmq6my9_.bkp
channel ORA_DISK_1: piece handle=/u01/app/oracle/flash_recovery_area/CANSADA/backupset/2011_01_21/o1_mf_nnnd1_TAG20110121T162155_6mmq6my9_.bkp tag=TAG20110121T162155
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

starting media recovery
media recovery complete, elapsed time: 00:00:00

Finished recover at 21-JAN-11

Coloquei a tablespace online para testar se estava tudo certo.

alter tablespace teste online;

Tablespace altered.


Agora vou fazer excluir o backup Level 1, para que seja usado os archives

alter tablespace teste offline;

Tablespace altered.


RMAN> restore tablespace teste;

Starting restore at 21-JAN-11
using channel ORA_DISK_1

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 00005 to /u01/app/oracle/oradata/CANSADA/datafile/o1_mf_teste_6mm3vnp7_.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/CANSADA/backupset/2011_01_21/o1_mf_nnnd0_TAG20110121T161926_6mmq1z2m_.bkp
channel ORA_DISK_1: piece handle=/u01/app/oracle/flash_recovery_area/CANSADA/backupset/2011_01_21/o1_mf_nnnd0_TAG20110121T161926_6mmq1z2m_.bkp tag=TAG20110121T161926
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 21-JAN-11



RMAN> recover tablespace teste;

Starting recover at 21-JAN-11
using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 18 is already on disk as file /u01/app/oracle/flash_recovery_area/CANSADA/archivelog/2011_01_21/o1_mf_1_18_6mmsvg8b_.arc
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=14
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=15
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=16
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=17
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/CANSADA/backupset/2011_01_21/o1_mf_annnn_TAG20110121T165741_6mms9oqs_.bkp
channel ORA_DISK_1: piece handle=/u01/app/oracle/flash_recovery_area/CANSADA/backupset/2011_01_21/o1_mf_annnn_TAG20110121T165741_6mms9oqs_.bkp tag=TAG20110121T165741
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=/u01/app/oracle/flash_recovery_area/CANSADA/archivelog/2011_01_21/o1_mf_1_14_6mmt2fcg_.arc thread=1 sequence=14
channel default: deleting archived log(s)
archived log file name=/u01/app/oracle/flash_recovery_area/CANSADA/archivelog/2011_01_21/o1_mf_1_14_6mmt2fcg_.arc RECID=30 STAMP=741028253
archived log file name=/u01/app/oracle/flash_recovery_area/CANSADA/archivelog/2011_01_21/o1_mf_1_15_6mmt2fcb_.arc thread=1 sequence=15
channel default: deleting archived log(s)
archived log file name=/u01/app/oracle/flash_recovery_area/CANSADA/archivelog/2011_01_21/o1_mf_1_15_6mmt2fcb_.arc RECID=32 STAMP=741028253
archived log file name=/u01/app/oracle/flash_recovery_area/CANSADA/archivelog/2011_01_21/o1_mf_1_16_6mmt2fcm_.arc thread=1 sequence=16
channel default: deleting archived log(s)
archived log file name=/u01/app/oracle/flash_recovery_area/CANSADA/archivelog/2011_01_21/o1_mf_1_16_6mmt2fcm_.arc RECID=29 STAMP=741028253
channel default: deleting archived log(s)
archived log file name=/u01/app/oracle/flash_recovery_area/CANSADA/archivelog/2011_01_21/o1_mf_1_17_6mmt2fcs_.arc RECID=31 STAMP=741028253
media recovery complete, elapsed time: 00:00:00
Finished recover at 21-JAN-11

Comentários

Postagens mais visitadas deste blog

Configurando a política de retenção de backups no RMAN

                       Configurando a politica de reten çã o de backups no RMAN        O objetivo deste post é explicar como podemos configurar a reten çã o de backups na poderosa ferramenta de backup do bando de dados Oracle RMAN. Podemos configurar nossa pol í tica tendo por base dois tipos: janela de recupera çã o (recovery window) ou redundãncia (redundancy). Abaixo iremos abordar os dois tipos.       Para identificar qual dos dois tipos o RMAN está usando, use: RMAN> show retention policy; Política baseada em redundância CONFIGURE RETENTION POLICY TO REDUNDANCY 1; Política baseada em janela de recuperação CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS; ·        Política baseada em redund â ncia ( REDUNDANCY )       De uma maneira bem simples e objetiva, o par â metro REDUNDANCY especifica quantos backups full ou incremental level 0 de cada datafile o RMAN vai manter, os demais são considerados obsoletos. Veja o exemplo abaixo

Permissões necessárias para criar triggers no Oracle

Há pouco tempo passei por um problema durante a criação de uma trigger de LOGON na versão 12c do banco de dados Oracle. Estava com alguns problemas em uma aplicação que tinha uma trigger de Logon. A trigger em si era bem simples, vou por o código mais abaixo, o problema é que ela estava criada dentro do usuário SYSTEM. Provavelmente foi a maneira mais fácil e preguiçosa de criar o objeto, uma vez que o SYSTEM já possui todas as permissões necessárias para criação. Porém isso não uma boa prática. Então resolvi tirar do SYSTEM e jogar para o usuário dono dos objetos da aplicação. Quando fui tentar criar o objeto no SCHEMA dono dos objetos da aplicação, recebi um erro com falta de permissões: ORA-01031: insufficient privileges . O erro ocorreu porque estava esquecendo de conceder a role ADMINISTER DATABASE TRIGGER para o usuário. Em resumo, as permissões necessárias para criação de uma trigger: CREATE TRIGGER - para criar uma trigger no seu próprio esquema (SCHEMA) CREATE AN

ORA-01623 ORA-00312 - Removendo redo logs

Após realizar um restore de um ambiente de Oracle RAC para um single instance usando snapshot de storage, tentei recriar os redo logs recebi o seguinte erro durante a exclusão de um grupo de discos. SQL> alter database drop logfile group 2; ORA-01623: o log 2 é o log atual para a instância UOW (thread 1) - não é possível eliminar ORA-00312: thread 2 do log 1 on-line: '+DATA/UOW/ONLINELOG/group_2.1638.1051804433' ORA-00312: thread 2 do log 1 on-line: '+DATA/UOW/ONLINELOG/group_2.981.1051804433' O erro quer dizer que o grupo de redo pertence a outra thread. Quer dizer que ele pertence a outra instância do ambiente RAC. Como no meu caso não precisarei mais dela, basta usar o comando: SAL> alter database disable thread 2; Database altered.   Usei o SQL abaixo para gerar os comandos para excluir os redo logs SQL> select distinct 'alter database drop logfile group '||(group#)||';' from v$log where thread#=2; 'ALTERDATABASEDROPLOGFILEGROUP'||(G