Existem várias formas de corrupção de dados, infelizmente mesmo com todos os cuidados às vezes somos pegos de surpresa.
Vários fatores podem ocasionar a corrupção do banco de dados, os principais são:
- Problemas na rede;
- Travamento de máquina;
- Queda de energia.
Qualquer interrupção entre o servidor e o banco de dados durante algum processo de gravação pode resultar em gravação incompleta ou corrompida de informações no arquivo de banco de dados.
Vou listar abaixo algumas dicas simples para tentar evitar ter dores de cabeça com o seu banco de dados:
1. Utilize sempre um nobreak;
2. Crie uma rotina de backup;
3. Se possível tenha um servidor dedicado;
4. Mantenha o sistema operacional sempre atualizado e otimizado;
5. Tenha uma rede bem estruturada.
Como eu disse anteriormente, mesmo com todos os cuidados, ainda sim corremos o risco de termos um banco de dados corrompido. Caso isso aconteça com você, siga o procedimento abaixo para diagnosticar e recuperar o seu banco de dados Firebird:
DIAGNOSTICANDO E RECUPERANDO BANCO DE DADOS FIREBIRD CORROMPIDO
Vou mostrar abaixo como utilizar o gfix, que é um utilitário de reparação de banco de dados do próprio Firebird. E vamos usar em conjunto o gbak, que também é do próprio Firebird, e faz o backup e restore do banco de dados.
LEMBRE-SE DE TER UMA CÓPIA DO BANCO DE DADOS ANTES DE INICIAR!
Todo o procedimento deve ser realizado através do prompt de comando. No windows, basta clicar em iniciar > executar > digitar “cmd”.
Assim que abrir o prompt, localize o caminho da pasta “bin” do Firebird, geralmente fica em: C:\Program Files (x86)\Firebird\Firebird_2_5\bin
Ainda no prompt de comando, siga os passos a seguir:
1. Verificar se o banco de dados realmente retorna alguma mensagem de erro:
gfix -v -full caminho_da_base -user nome_usuario -pass senha_usuário
(Exemplo: gfix -v -full C:\Sistema\banco.fdb -user SYSDBA -pass masterkey)
2. Caso retorne algum erro, vamos tentar repará-lo:
gfix -m -i caminho_da_base -user nome_usuario -pass senha_usuário
(Exemplo: gfix -mend -full -ignore C:\Sistema\banco.fdb -user SYSDBA -pass masterkey)
3. Teste novamente o banco de dados (Passo1):
gfix -v -full caminho_da_base -user nome_usuario -pass senha_usuário
(Exemplo: gfix -v -full C:\Sistema\banco.fdb -user SYSDBA -pass masterkey)
4. Caso o erro persista, você deve fazer um backup completo e restaurá-lo:
gbak -backup -v -ignore database.fdb database.gbk
(Exemplo: gbak -backup -v -ignore C:\Sistema\banco.fdb C:\Sistema\novo_banco.gbk -user SYSDBA -pass masterkey)
5. Agora crie um novo banco de dados através deste backup:
gbak -create -v database.gbk database.fdb
(Exemplo: gbak -create -v C:\Sistema\novo_banco.gbk C:\Sistema\novo_banco.fdb -user SYSDBA -pass masterkey)
Pronto, agora teste a nova base de dados.
Se mesmo assim o erro persistir, você pode consultar o meu serviço de recuperação de banco de dados Firebird.
O orçamento é gratuito, só preciso que envie para o e-mail que vou deixar abaixo, uma breve descrição do problema e o seu banco de dados Firebird em anexo (zipado).
Vou analisar a sua base de dados e caso eu encontre uma solução, te respondo com o valor do serviço.
E-mail para suporte: contato@delphiparainiciantes.com.br
Espero que tenha gostado deste artigo! Qualquer dúvida ou sugestão, deixe o seu comentário abaixo.
Link permanente
A explicação é de boa valia.
Obrigado
Wilson
‘programador a mais de 30’
Link permanente
Obrigado Wilson, seja sempre bem-vindo! Abraços. 🙂
Link permanente
Boa tarde meu amigo, existe alguma forma de verificar a integridade de um arquivo de backup gerado pelo gbak? A fins de localizar algum defeito com o arquivo impedindo assim de ser restaurado.
Link permanente
Oi Gleisson, obrigado pela visita! Geralmente quando tem algum erro no banco de dados na hora de fazer o backup o próprio gbak já acusa. O ideal é você rodar o gfix antes para saber se o banco está sem erro. Aí sim depois fazer o backup. Abraços!
Link permanente
PERFEITO! obrigada, resolveu o meu problema, continue publicando mais informações!
Link permanente
Oi Thalita! Obrigado pela visita, fico feliz que tenha te ajudado. Sucesso pra você! =)
Link permanente
Olá, ótima explicação, mas não obtive sucesso. Na hora de criar o backup retornou o erro: gbak:Exiting before completion due to errors
Link permanente
Oi Carlos, boa noite e obrigado pela visita! =)
Em alguns casos mais críticos esse procedimento não funciona. Se quiser, me envia o banco de dados que dou uma analisada pra ver se consigo alguma solução. Zipa e manda para: contato@delphiparainiciantes.com.br
Abraços!