Recuperar Banco de dados Firebird corrompido (Gfix e Gbak)

1) Entrar no CMD através do menu:

  • Iniciar >> Digite 'CMD' e, ao aparecer o aplicativo "Prompt de Comando", clique com o botão direito do mouse, e depois clique em "Executar como Administrador"

  • Neste exemplo, será utilizado o Firebird 2.5. Sua instalação como padrão fica em: C:\Arquivos de programas\Firebird\Firebird_2_5\ 

Obs.: Para realizar o processo vamos trabalhar com dois utilitários, que vem junto ao Firebird: Gfix, e Gbak, arquivos estes que encontram-se na pasta C:\Arquivos de programas\Firebird\Firebird_2_5\bin.

Antes de mais nada, realize uma cópia do seu banco de dados.

2) Na tela de Prompt de Comando, acesse a pasta: 'C:\Arquivos de programas\Firebird\Firebird_2_5\bin', conforme imagem abaixo:

  • Dica: para localizar a pasta desejada no DOS, digite 'cd + nome da pasta' e depois tecle [ENTER] (com a tecla [TAB] é possível pesquisar as pastas que estão dentro de determinado diretório).

  • Obs.: lembrando que em algumas máquinas o Firebird pode estar instalado na pasta 'Arquivos de Programas (x86)' ou 'Program Files' ou ainda 'Program Files (x86)', conforme o exemplo abaixo:

3) Para facilitar, copie a base de dados para a pasta 'bin', evitando que o caminho da base tenha que ser digitado para todos os procedimentos.

4) Ainda, vamos definir variáveis de ambiente para tornar o processo mais rápido, evitando ficar digitando nome de usuário e senha para todos procedimentos, para isso execute o comando abaixo:

  • SET ISC_USER=SYSDBA

  • SET ISC_PASSWORD=masterkey

5) Para verificar se o banco de dados esta corrompido, execute o comando abaixo. Lembrando que no exemplo abaixo o nome da Base de Dados está como 'DADOS.GDB', mas pode ser outro nome, ou até mesmo outra extensão com 'DATA.FDB' por exemplo:

  • gfix -v -full DADOS.GDB

Se o comando acima retornou algum aviso, é necessário recuperar o banco.

Ex. de Retorno para Banco de Dados corrompido:

6) Caso a base necessite ser restaurada, executaremos um tentativa de restauração, e também executar outra verificação, utilizando os seguintes comandos:

  • gfix -mend -full -ignore DADOS.GDB

  • gfix -v -full DADOS.GDB

  • ATENÇÃO: Se ao executar estes comandos, aparecer algum erro, a recuperação não foi possível e você terá que seguir para o próximo passo

  • Exemplo de retorno indevido:

 

7) Caso a tentativa inicial não corrija o banco, iremos tentar outra solução, iremos criar um backup da base corrompida, e a partir deste backup, iremos reparar o banco.
Portanto, execute em seu terminal este comando:

  • gbak -backup -v -ignore DADOS.GDB DADOS.FBK

  • Assim, é criado o arquivo de backup DADOS.FBK, é normal serem exibidas muitas linhas na tela:

8) Caso o comando anterior retorne qualquer erro ou falha, utilize o comando a seguir:

  • gbak -backup -v -ignore -garbage DADOS.GDB DADOS.FBK


9)  Agora que criamos um arquivo de backup, precisaremos criar um novo arquivo de banco de dados, que possa ser acessado pelo Firebird.
Para isso utilizaremos o seguinte comando:

  • gbak -create -v DADOS.FBK NOVO.FDB

  • Obs.:  Nesta etapa, assim como no passo 7, é normal que várias linhas sejam mostradas na tela

10) Agora temos um arquivo de banco de dados, porém precisamos torna-lo um banco de dados ativo, para isso, usaremos o seguinte comando:

  • gfix -online NOVO.FDB

11) Execute novamente o passo 6, no arquivo NOVO.FDB

12) Realize o teste a seguir, se nenhum erro for retornado, nosso banco de dados está recuperado:

  • gfix -v -full NOVO.FDB

OBSERVAÇÕES IMPORTANTES:

  • Se a recuperação funcionar de primeira, sem que seja feito um backup, é ideal utilizar o gbak para manter uma cópia da base recuperada.

  • Se você mudar o nome da sua base de dados, não se esqueça de alterar as variáveis de empresa e nos arquivos de configuração dos módulos.

  • Não se esqueça de substituir os nomes de arquivos nos comandos, pelos nomes correspondentes aos seus, assim como foi citados no passo 5.

  • Após a realização dos procedimentos, pode haver problemas dentro da base de dados, analise e caso necessários, abra uma solicitação ao Desenvolvimento