Aplica-se a:
Banco de dados Oracle - 11gR2
Problema:
Muitas vezes, durante a realização de testes de referência de desempenho, é necessário carregar um banco de dados limpo antes de iniciar uma nova execução. A única maneira de garantir um banco de dados limpo é recriar o banco de dados inteiro antes de cada execução de teste, mas, dependendo do tamanho dele, essa abordagem pode ser muito demorada e ineficiente.
Solução:
Este artigo descreve como usar o recurso de flashback da Oracle para restaurar rapidamente um banco de dados para um estado em que se encontrava antes de executar a carga de trabalho. Mais especificamente, este artigo descreve as etapas sobre como usar os "pontos de restauração garantido".
Ponto de restauração:
Ponto de restauração nada mais é do que um nome associado a um marcação de hora e data ou uma SCN do banco de dados. É possível criar um ponto de restauração normal ou um ponto de restauração garantido. A diferença entre os dois é que o ponto de restauração garantido permite fazer um flashback para o ponto de restauração, independentemente do parâmetro de inicialização DB_FLASHBACK_RETENTION_TARGET, ou seja, ele está sempre disponível (supondo que você tenha espaço suficiente na área de recuperação flash).
Nota: Neste artigo, o registro de Flashback não foi ativado.
Ponto de restauração garantido:
Pré-requisitos: a criação de um ponto de restauração garantido requer os seguintes pré-requisitos:
- O usuário deve ter privilégios de sistema SYSDBA
- Deve ter criado uma área de recuperação flash
- O banco de dados deve estar em modo ARCHIVELOG
Criar um ponto de restauração garantido:
Após criar ou migrar um novo banco de dados, a primeira coisa a fazer é criar um ponto de restauração garantido para que você possa fazer o flashback dele toda vez antes de iniciar uma nova carga de trabalho. As etapas são:
- $> su – oracle
- $> sqlplus / as sysdba;
- Descubra se ARCHIVELOG está habilitado
SQL> select log_mode from v$database;
Se a etapa 3 mostrar que ARCHIVELOG não está habilitado, continue, caso contrário, pule para a etapa 8 abaixo.
- SQL> shutdown immediate;
- SQL> startup mount;
- SQL> alterar archivelog do banco de dados;
- SQL> alter database open;
- SQL> create restore point CLEAN_DB guarantee flashback database;
em que CLEAN_DB é o nome dado ao ponto de restauração garantido.
Visualização do SQL do ponto de restauração garantido
SQL> select * from v$restore_point;
Verifique as informações sobre o ponto de restauração recém-criado. Além disso, anote o SCN# para referência. Vamos nos referir a ele como "referência SCN#"
Fazer flashback para o ponto de restauração garantido
Agora, para restaurar o banco de dados ao ponto de restauração garantido, siga as etapas abaixo:
- $> su – oracle
- $> sqlplus / as sysdba;
- SQL> select current_scn from v$database;
- SQL> shutdown immediate;
- SQL> startup mount;
- SQL> select * from v$restore_point;
- SQL> flashback database to restore point CLEAN_DB;
- SQL> alter database open resetlogs;
- SQL> select current_scn from v$database;
Compare o SCN# da etapa 9 acima com o SCN# de referência.
Nota: O SCN# da etapa 9 acima pode não ser necessariamente o mesmo SCN# que o SCN# de referência, mas será suficientemente parecido.
Referências: