O gfix é o utilitário oficial do Firebird para manutenção e reparo de banco de dados. A recuperação com Firebird gfix parece a solução óbvia quando o banco para de funcionar — mas usado no momento errado ou no modo incorreto, o gfix destrói dados de forma irreversível. Além disso, a documentação oficial do Firebird deixa claro que o gfix não é uma ferramenta de recuperação de dados — é uma ferramenta de manutenção. Por isso, entender o que o gfix faz internamente define a diferença entre usar a ferramenta certa e perder dados permanentemente.
O que o gfix realmente faz
O gfix é um utilitário de linha de comando que interage diretamente com a estrutura interna do arquivo FDB. Além disso, ele tem várias funções distintas — cada uma com riscos diferentes em um banco corrompido.
gfix -validate: modo somente leitura que verifica a integridade das páginas do banco. Portanto, é seguro executar — não modifica o arquivo. A saída do validate indica quais páginas têm problemas e de que tipo. Por isso, sempre comece por aqui antes de qualquer outra ação.
gfix -mend: marca páginas corrompidas como “in use” para que o gbak possa completar um backup mesmo com erros. Além disso, tenta corrigir inconsistências de transação na header page. Contudo, o -mend sobrescreve os metadados de controle das páginas marcadas — o que pode destruir dados ainda recuperáveis nessas páginas. Portanto, nunca execute -mend sem cópia física prévia do FDB.
gfix -sweep: remove versões antigas de registros (garbage collection manual). Além disso, o sweep recalcula OAT e OIT na header page. Contudo, em um banco com páginas corrompidas, o sweep pode tentar acessar exatamente as páginas danificadas e agravar a corrupção — ou travar indefinidamente.
gfix -shut: encerra conexões ativas e fecha o banco de forma controlada. Por isso, é a opção mais segura do gfix — usada para manutenção planejada, não para recuperação de corrupção.
Para entender como a recuperação forense funciona quando o gfix não resolve, veja recuperação de banco Firebird FDB corrompido.
Quando o gfix resolve e quando não resolve
Resolve: problemas de transação — OAT e OIT inconsistentes após shutdown abrupto, transações limbos que impedem o banco de abrir. Além disso, resolve corrupção leve de header page que o -mend consegue reconstruir sem apagar dados.
Não resolve: corrupção física de data pages — páginas com checksum inválido por problema de disco. O gfix marca essas páginas mas não recupera os dados que estavam nelas. Além disso, não resolve FDB com múltiplas páginas corrompidas em posições críticas — tabelas de sistema, páginas de índice raiz ou data pages de tabelas críticas.
Piora a situação: executar gfix -mend seguido de gbak em um FDB com corrupção extensa frequentemente resulta em um backup incompleto que parece completo — com registros faltando silenciosamente. Por isso, esse é o cenário que a Crowdertech mais recebe depois de tentativas de reparo malsucedidas. Veja como funciona o atendimento de recuperação de dados urgente.
O protocolo correto antes de usar qualquer ferramenta Firebird
Passo 1 — Copie o FDB fisicamente: antes de qualquer coisa, copie o arquivo .fdb para outro disco ou pasta. Além disso, verifique que a cópia não está truncada — o tamanho deve ser idêntico ao original. Por isso, esse é o passo mais importante e frequentemente pulado.
Passo 2 — Execute gfix -validate apenas: o validate não modifica o arquivo. Além disso, a saída mostra exatamente quais páginas têm problema — informação que o especialista de recuperação vai precisar. Portanto, salve o output do validate antes de qualquer outra ação.
Passo 3 — Avalie o output: se o validate reportar apenas “wrong OAT” ou “wrong OIT”, o -mend provavelmente resolve sem perda de dados. Contudo, se reportar “page X is doubly allocated” ou “page X has wrong type”, há corrupção física de páginas — e o -mend vai destruir o que ainda existe nelas.
Passo 4 — Acione especialistas para corrupção física: quando o validate reporta corrupção de data pages, a recuperação forense extrai os dados diretamente antes de qualquer tentativa de reparo. Além disso, a Crowdertech faz isso sem passar pelo motor do Firebird — preservando o máximo de registros. Para mais informações sobre recuperação de banco de dados, veja recuperação de banco de dados.
Erros mais comuns ao usar gfix em banco corrompido
Executar -mend sem cópia prévia: o erro mais comum e mais destrutivo. Além disso, o -mend não tem opção de rollback — o que foi sobrescrito não volta.
Executar -sweep antes do -validate: o sweep tenta acessar todas as páginas do banco. Quando há páginas corrompidas no caminho, o sweep pode travar ou agravar a corrupção. Por isso, sempre valide antes de varrer.
Usar gbak -b diretamente no FDB corrompido: o gbak em modo backup lê o banco via motor do Firebird. Quando há páginas corrompidas, o gbak pode abortar silenciosamente no meio — gerando um arquivo de backup incompleto que parece completo. Além disso, alguns ERPs fazem backup automático via gbak — e o backup corrompido vai sobrescrever o backup anterior se não houver rotação de versões.
Perguntas frequentes
Posso executar gfix -mend e depois gbak para fazer backup do banco corrompido? Somente se a corrupção for de transação (OAT/OIT), não de data pages. Além disso, sempre faça cópia física do FDB antes do -mend. Portanto, consulte o output do -validate primeiro.
Firebird que não abre com “internal gds software consistency check” tem recuperação? Sim, frequentemente. Esse erro indica inconsistência interna que pode ser de transação ou de página. A Crowdertech avalia o FDB por forense para determinar o que ainda é recuperável.
gfix -validate trava sem completar — o que isso indica? Geralmente indica página corrompida que o Firebird não consegue processar. Portanto, encerre o validate e acione especialistas — tentar novamente pode agravar a situação.
Conclusão
O gfix é uma ferramenta de manutenção, não de recuperação de dados. A recuperação com Firebird gfix funciona apenas para problemas de transação — e destrói dados quando aplicado a corrupção física de páginas. Além disso, a cópia física do FDB antes de qualquer ação é o único passo que garante uma segunda chance. Em resumo, valide, copie e acione especialistas antes de -mend. A Crowdertech recupera Firebird sem gfix — (11) 99630-0675.
Fontes: Firebird Documentation — gfix · NIST SP 800-86.