RMAN Incremental Backups

05 jan

RMAN Incremental Backups

Design sem nome (2)

RMAN Incremental Backups

 

Aprenda como realizar RMAN Incremental nesse Laboratório.

 

O objetivo de RMAN incremental backup é fazer backup apenas dos blocos de dados que mudaram desde o backup anterior especificado. Você pode fazer backups incrementais de databasestablespaces ou datafiles.

 

Motivos para fazer backups incrementais como parte de sua estratégia:

 

  • Reduzir o tempo necessário para backups diários.
  • Reduzir a largura de banda da rede ao fazer backup em uma rede.
  • Para poder recuperar as alterações nos objetos criados com a opção NOLOGGING. Pois, eles modificam os blocos de dados e são capturados por backups incrementais.

 

Cada bloco de dados em um arquivo de dados contém um número de alteração do sistema (SCN), que é a mudança mais recente que foi feita para o bloco. Durante um backup incremental, o RMAN lê o SCN de cada bloco de dados no arquivo de entrada e o compara com o ponto de verificação SCN do backup incremental pai. Se o SCN no bloco de dados de entrada for maior que o ponto de verificação SCN do pai, então o RMAN copia o bloco.

 

Observe que, se você habilitar o recurso de rastreamento de alteração de bloco (Block Change Tracking) somente disponível na versão Enterprise Edition, o RMAN pode se referir ao arquivo de rastreamento de alterações para identificar blocos alterados em arquivos de dados sem verificar o conteúdo completo do arquivo de dados.

 

Uma vez habilitado, o rastreamento de alterações de bloco não altera a forma como você tira ou usa backups incrementais, além de oferecer um desempenho aumentado.

 

Os backups incrementais podem ser de nível 0 ou nível 1. Um backup incremental de nível 0, que é a base para backups incrementais subsequentes, copia todos os blocos que contêm dados, fazendo backup do arquivo de dados em um conjunto de backup, assim como um backup completo.

 

Pré-requisitos

 

Oracle Database 10g ou superior.
Criar as seguintes tabelas para testes.

 

[sql]
SQL> create table teste tablespace users as select * from all_objects;
SQL> create table teste2 NOLOGGING tablespace users as select * from all_objects;
[/sql]

RMAN Incremental Diferencial

 

Em um backup de nível 1 diferencial, o RMAN faz backup de todos os blocos que mudaram desde o backup incremental cumulativo ou diferencial mais recente, seja no nível 1 ou no nível 0. O RMAN determina qual o backup de nível 1 que ocorreu mais recentemente e faz backup de todos os blocos modificados depois disso.

 

 

[sql]
RMAN> report need backup;
RMAN> report unrecoverable;
RMAN> backup incremental level 0 database tag 'BackupFull';
SQL> insert into teste select * from teste;
RMAN> backup incremental level 1 database tag 'Diferencial';
RMAN> list backup;
[/sql]

 

Também podemos fazer o backup compactado e incluindo o backup dos arquivos.

 

[sql]
RMAN> backup as compressed backupset incremental level 0 database plus archivelog tag 'BackupFull';
RMAN> backup as compressed backupset incremental level 1 database plus archivelog tag 'Diferencial';
RMAN> RMAN> list backup;
[/sql]

 

Listando os backups.

 

[sql]
SQL> list backup summary;
[/sql]

RMAN Incremental Cumulativo

 

Em um backup cumulativo de nível 1, o RMAN faz backup de todos os blocos usados desde o backup incremental de nível 0 mais recente. Os backups incrementais cumulativos reduzem o trabalho necessário para uma restauração, assegurando que você precisa apenas de um backup incremental de qualquer nível específico. Porém exigem mais espaço e tempo do que os backups diferenciais.

 

 

[sql]
RMAN> backup incremental level 1 cumulative database tag 'Cumulativo';
[/sql]

 

Listando os backups.

 

[sql]
SQL> list backup;
SQL> list backup summary;
[/sql]

 

Habilitando Block Change Tracking (Somente para Enterprise)

 

[sql]
SQL> alter database enable block change tracking;
[/sql]

 

Também pode ser feito informando o local do arquivo, é importante manter o arquivo em um disco diferente do utilizado para o redo para evitar sobrecarga de I/O.

 

[sql]
SQL> alter database enable block change tracking using file '/home/oracle/block_change.rman';
[/sql]

 

Repita os backups para comparar a velocidade.

 

[sql]
RMAN> backup incremental level 0 database tag 'BackupFullBCT';
SQL> insert into teste select * from teste;
RMAN> backup incremental level 1 database tag 'DiferencialBCT';
SQL> insert into teste select * from teste;
RMAN> backup incremental level 1 cumulative database tag 'CumulativoBCT';
[/sql]

 

Listando os backups.

 

[sql]
SQL> list backup;
SQL> list backup summary;
[/sql]

 

Verifique a utilização do Block Change Tracking.

 

[sql]
SQL> select * from v$block_change_tracking;
SQL> select datafile_blocks, blocks_read, used_change_tracking from v$backup_datafile where file# = 1;
[/sql]

 

Atualizando um Backup Full com backups incrementais

 

As vezes é interessante manter apenas um backup, porém ele deve estar atualizado. Podemos utilizar o seguinte comando para atualizar um backup full level 0 com backups incrementais.

 

[sql]
RMAN> backup as copy database tag 'BackupFullBCT';
RMAN> backup incremental level 1 for recover of copy with tag 'BackupFullBCT' database;
SQL> insert into teste select * from teste;
RMAN> backup incremental level 1 for recover of copy with tag 'BackupFullBCT' database;
SQL> insert into teste select * from teste;
RMAN> backup incremental level 1 for recover of copy with tag 'BackupFullBCT' database;
[/sql]

 

Para finalizar podemos também atualizar o backup full com um novo backup full.

 

[sql]
RMAN> recover copy of database with tag 'BackupFullBCT';
[/sql]

Referências Bibliográficas

https://docs.oracle.com/cd/B19306_01/backup.102/b14192/bkup004.htm

https://docs.oracle.com/cd/B19306_01/backup.102/b14192/bkup007.htm

http://nervinformatica.com.br/blog/index.php/2011/01/11/backup-incremental-x-restore-x-recover/

http://nervinformatica.com.br/blog/index.php/2014/09/24/incrementally-updated-backups/

http://eduardolegatti.blogspot.com.br/2012/07/rman-backup-incremental-cumulativo-vs.html