Recuperando-se de falhas com o Data Recovery Advisor
Introdução
No artigo de hoje vou apresentar o Data Recovery Advisor (DRA), uma ferramenta que passou a existir na versão 11 do Oracle Database e que pouca gente conhece, mas que é muito útil para efetuar uma rápida detecção, análise e reparo de falhas no Banco de Dados. Essas falhas, são na grande maioria, corrompimento lógico ou físico de dados.
Principais problemas que o DRA pode detectar e corrigir:
- Datafiles não encontrados no SO;
- Privilégios de acesso incorretos;
- Corrompimento físico de dados, tal como um bloco de dados perdido em decorrência de danos físicos no disco;
- Corrompimento lógico de dados, tal como uma inconsistência no dicionário de dados;
- Inconsistências nos control files ou redo logs;
- Falhas de I/O, tais como: qtde. máxima de arquivos abertos excedida, rede inacessível etc.
Para usar o DRA, precisamos nos conectar no RMAN e executar as funcionalidades abaixo:
1- A detecção de falhas através do comando VALIDATE DATABASE;
VALIDATE DATABASE deve ser executado para detectar falhas no BD.
2- A listagem de falhas através do comando LIST FAILURE;
LIST FAILURE deve ser executado para listar as falhas encontradas no BD.
3- A geração de um diagnóstico através do comando ADVISE FAILURE;
ADVISE FAILURE deve ser executado para gerar um diagnóstico das falhas encontradas no BD.
4- A aplicação de um diagnóstico através do comando REPAIR FAILURE.
REPAIR FAILURE deve ser executado para exibir e/ou aplicar scripts de reparo de falhas, automaticamente no BD.
Obs.: Os items acima devem ser executados sequencialmente, um após o outro, ou seja, não podemos executar o item 4 antes de ter executado o item 3, e assim, sucessivamente.
A seguir iremos executar um passo-a-passo para testar o DRA. Para vermos como a ferramenta funciona, apaguei em um BD de teste chamado orcl, um datafile com o nome teste.dbf.
PASSO-A-PASSO PARA EXECUTAR O DRA
Passo 1: Conecte-se no RMAN:
No prompt do SO (Linux), conecte-se no RMAN, como no exemplo abaixo:
export ORACLE_SID=orcl rman target /
Passo 2: Inicie a detecção de problemas:
No prompt do RMAN execute o comando abaixo:
RMAN> validate database;
Passo 3: Exiba a lista de problemas:
No prompt do RMAN execute o comando abaixo:
RMAN> list failure;
Resultado:
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
78422 HIGH OPEN 30-JUL-13 One or more non-system datafiles are missing
Veja pelo resultado acima que a ferramenta conseguiu identificar que existem 1 ou mais datafiles não encontrados.
Passo 4: Gerando o diagnóstico:
No prompt do RMAN execute o comando abaixo:
RMAN> advise failure;
Resultado:
analyzing automatic repair options; this may take some time
using channel ORA_DISK_1
analyzing automatic repair options complete
Mandatory Manual Actions
========================
1. If file /ora/orcl/teste.dbf was unintentionally renamed or moved, restore it
2. If you have an export of tablespace TESTE, then drop and re-create the tablespace and import the data.
3. Contact Oracle Support Services if the preceding recommendations cannot be used, or if they do not fix the failures selected for repair
Optional Manual Actions
=======================
no manual actions available
Automated Repair Options
========================
no automatic repair options available
Veja pelo resultado acima que a ferramenta conseguiu identificar 3 opções de reparo para restaurar o datafile não encontrado.
Na 1ª opção ela pede para verificar se datafile teste.dbf foi renomeado ou removido e sugere restaurá-lo manualmente.
Na 2ª opção ela sugere restaurar os dados através de um export, se houver algum dump contendo os dados do tablespace TESTE (tablespace correspondente ao datafile que foi apagado). Se eu tivesse feito um backup deste datafile antes, o DRA iria sugerir a restauração do backup e geraria um script completo de restauração deste backup ao executar o próximo passo.
Na 3ª opção ela sugere contatar o suporte da Oracle.
Passo 5: Verificando e/ou implementando as opções de reparo:
É uma boa prática sempre verificar o script de reparo do DRA antes de aplicá-lo, a fim de evitar desastres maiores. Se um datafile foi movido para outra pasta acidentalmente, é melhor verificar isso fora da ferramenta e voltar o datafile para o seu lugar original, ao invés de executar um script de restore de backup que a ferramenta poderia sugerir.
No prompt do RMAN, execute o comando abaixo para verificar o script de reparo gerado pela ferramenta:
RMAN> repair failure preview;
Resultado:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of repair command at 07/30/2013 17:00:03
RMAN-06953: no automatic repairs were listed by ADVISE FAILURE
Como não existia backup do datafile, o DRA não conseguiu gerar uma opção de reparo automática. Se o contrário tivesse ocorrido, você poderia aplicar o script de reparo automaticamente, executando o comando abaixo:
RMAN> repair failure;
Para ver uma lista de todas as falhas e reparos do BD, é possível também, consultar as visões: V$IR_FAILURE e V$IR_REPAIR.
Bom pessoal, por hoje é só!
Para obter mais informações sobre o DRA e aprender mais sobre esta ferramenta, consulte as referências ao final do artigo.
Referências
- Diagnosing and Repairing Failures with Data Recovery Advisor
- Data Recovery Advisor in Oracle Database 11g Release 1