Como corrigir Banco Firebird Corrompido
Recuperando seu DB

Publicado em: 02/12/2016 00:00:00, por IVAN VARGAS

Quem nunca passou pela triste situação de receber a ligação de um cliente - em plena sexta-feira à noite - dizendo que o sistema está fora do ar, e tudo isso porque o nosso querido amigo Firebird foi corrompido devido a uma queda de energia ou por alguém ter chutado o estabilizador em um daqueles breves momentos de stress? :)

Se este é o seu caso e você precisa corrigir rapidamente um banco de dados corrompido, siga este passo-passo e seus problemas estarão resolvidos (ou não):

Obs: Neste exemplo vamos assumir que você está em um prompt de comando do Windows (c:\>) e que seu banco de dados se chama database.fdb. Também estou ignorando a passagem de usuário e senha ao final de cada comando (portanto, adicione essa linha ao final de cada comando: -user sysdba -password masterkey).

1. Verifique se seu banco de dados está realmente corrompido:

gfix -v -full database.fdb

Este comando irá retornar algumas informações com o número de registros corrompidos e páginas afetadas, se houver. Se o comando não retornar nada seu banco está ok e sem erros \0/

2. Se o comando informou que existem erros no banco, tente este comando:

gfix -mend -full -ignore database.fdb

Depois de executar este comando, realize o passo 1 novamente, pode ser que alguns erros tenham sido corrigidos, mas não todos. Você pode executar o passo 1 e 2 várias vezes. Mas se o número de erros não diminuir e o banco continuar bugado vamos para um backup/restore matador :)

3. Vamos realizar um backup:

gbak -g -l -z -v database.fdb database.bkp

Aqui realizamos o backup com as seguintes flags:

-g: realiza o garbage collect (coleta de lixo)

-l: ignora transações no limbo

-v: relata cada ação tomada

-z: imprime número de versão

4. Agora vamos restaurar:

gbak -create -v database.bkp database2.fdb

Este comando ira restaurar o banco de dados em database2.fdb (esse será o banco de dados sem corrigido).

Após isso execute o passo 1 no database2.fdb e você verá que não existem mais erros. Banco restaurado com sucesso! \0/

Se mesmo assim nao funcionar, tente este comando para restaurar o backup:

gbak -create -v -inative -ONE_AT_A_TIME database.bkp database2.fdb

Dificilmente precisa utilizar este comando, mas se precisar estar ai :)

Outra coisa, se der erro no charset, adicione isso ao final do comando de restore: -FIX_FSS_M win1252

Este já precisei utilizar algumas vezes.

Espero que estes comandos possam lhe ajudar :)

---

Ivan S. Vargas

 

 



IS5 TECNOLOGIA

São Lourenço do Sul/RS
Telefone: (53)9963-5721
E-mail: contato@is5.com.br
Facebook: fb.com/is5tecnologia
Skype: ivan_is5
GitHub: github.com/isvargas
O QUE FAZEMOS

Automação Comercial
Desenvolvimento de Sistemas
Hospedagem e Desenvolvimento de Sites
Aplicativos Mobile
Consultoria e Projetos Freelancer
Desenvolvido por is5 tecnologia