Páginas

30 de jul. de 2013

Recuperando-se de falhas com o Data Recovery Advisor

Olá pessoal,

     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.

Visão geral do DRA

     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 deste artigo.
  
      
Referências:
     - Diagnosing and Repairing Failures with Data Recovery Advisor             
     - Data Recovery Advisor in Oracle Database 11g Release 1               

4 comentários:

  1. Fábio, muito legal.

    Vou simular aqui para poder testar, muito obrigado.

    ResponderExcluir
    Respostas
    1. Pois é Alessandro... essa ferramenta é muito fácil de usar e pode quebrar um galhão!

      []s

      Excluir
  2. Olá Fabio,

    Tentei executar o passo a passo em um RAC database mas não funinaram os comandos "list failure e advise failure" pode me orientar onde conseguir uma lista de comandos para executar o DRA em um RAC database.
    Antecipadamente agradeço.

    ResponderExcluir
    Respostas
    1. Dá uma lida em docs oficiais da oracle online, como por exemplo: https://docs.oracle.com/database/121/BRADV/rcmrepai.htm#BRADV89725. Nele você encontrará considerações em ambientes RAC.

      Excluir