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 databases, tablespaces 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