Resolvendo o problema da Corrupção…

Solução para alguns problemas…Hehehe, calma, calma!! Não estou propondo solução para todos os problemas políticos, infelizmente não é desta solução que estou falando.
Olá meu amigo! Bom dia, boa tarde, boa noite! Como prometi, estamos aí novamente, após alguns dias afastado, mas desta vez prometo não sumir mais.

Seguinte, nosso assunto de hoje é algo muito interessante, trataremos de uma ferramenta que ajuda a corrigir problemas de corrupção lógica dos blocos de dados no Oracle Database.
Antes de iniciar com a ferramenta, gostaria de explicar que sempre que ouvirmos falar em  corrupção de dados, ou blocos sempre precisamos entender algo inicialmente. Se esta corrupção é lógica ou física. Não vou me alongar em conceitos de lógica e física, apenas vou comentar a diferença de uma forma bem simples. Lógica tem a ver com aplicação, com o banco de dados em si, já a física nos remete ao sistema operacional, ou seja fora do banco de dados.
Tem uma boa associação que faço sempre sendo lógica ligada a software e física ligada a hardware. Com isto lembro de uma definição sensacional que ouvi certa vez a certa de hardware e software: “Hardware é o que você chuta e Software é o que você xinga.” rsrsrs.
Bem, deixemos de conversa fiada e vamos à ferramenta. Trata-se da tentativa de correção do maldito erro: ORA-01578: “ORACLE data block corrupted (file # %s, block # %s)”.

Quando este tipo de erro ocorre, além do erro na sessão que estava tentando fazer a leitura do bloco, o mesmo é registrado no alert.log da instância também o que facilita a verificação. Além disto existe uma view famosas v_dollar que nos permite verificar blocos registrados como corrompidos, a V$DATABASE_BLOCK_CORRUPTION.

Quando normalmente a gente ouve falar de bloco corrompido já vem em mente o desespero não é mesmo? Calma! Nem tudo está perdido.
Existe uma ferramenta que utilizamos com o RMAN e que consegue na maioria das vezes corrigir falhas de blocos lógicos corrompidos.
Usando o BLOCK MEDIA RECOVERY.
Este cara utiliza:

  • Identifica o backup que contém os blocos para recuperar
  • Lê os backups e compara com dados em blocos de memória.
  • Lê dos archivelogs se necessário.

Como utilizar:
1- Primeiro passo é descobrir os arquivos(files) e os blocos danificados, porém isto já mostra na view acima ou no alert.log.
2- Conectado pelo RMAN basta colocar os dados no comando e muito provavelmente terá seu problema resolvido:
Recupera um bloco apenas:
RECOVER DATAFILE 5 BLOCK 2;

Recupera múltiplos blocos em multiplos datafiles:
RECOVER     

DATAFILE 4 BLOCK 87
   
DATAFILE 4 BLOCK 97
DATAFILE 6 BLOCK 187;

Recupera todos os blocos da v$ citada acima:
RECOVER CORRUPTION LIST; 

Fácil não é mesmo?
Porém Jamais esqueça da pró-atividade! SEMPRE verifique o motivo pelo qual ocorreu a corrupção lógica, e lembre-se: Ela poderá ocorrer outra vez e quem sabe não tenha a mesma sorte. Portanto, DBA faça da pró-atividade uma rotina!

Grande abraço, até a próxima e jamais esqueça, foco na META SEMPRE!!!

Sobre raul andrade

DBA e Instrutor Oracle, apaixonado pela minha família e por ensinar.
Esta entrada foi publicada em DBA Oracle, Dicas de Tecnologia. Adicione o link permanente aos seus favoritos.

Deixe uma resposta