Firebird FDB corrompido sem backup é um dos cenários mais frequentes que chegam ao laboratório da Crowdertech — e um dos mais mal diagnosticados. A recuperação de banco Firebird FDB corrompido é possível porque os dados vivem nas páginas físicas do arquivo, não no motor do banco. Além disso, o Firebird usa uma arquitetura de arquivo único — todo o banco em um único .fdb ou .gdb — o que torna a recuperação forense direta e eficiente quando feita corretamente. Por isso, entender como o Firebird armazena dados fisicamente é o primeiro passo para entender por que a perda raramente é total.

Como o Firebird armazena dados no arquivo FDB

O Firebird armazena todo o conteúdo do banco — dados, índices, metadados e controle de transações — em um único arquivo .fdb (ou .gdb em versões mais antigas). Esse arquivo é organizado em páginas de tamanho fixo: 4 KB, 8 KB ou 16 KB dependendo da configuração do banco. Portanto, cada tabela, índice e objeto do banco ocupa um conjunto de páginas dentro do mesmo arquivo.

Página de cabeçalho (header page): a primeira página do arquivo contém metadados do banco — versão do Firebird, tamanho de página, OAT (Oldest Active Transaction), OIT (Oldest Interesting Transaction) e outras informações de controle. Quando essa página corrompe, o Firebird não consegue abrir o banco. Contudo, os dados nas demais páginas permanecem intactos.

Páginas de dados (data pages): contêm os registros das tabelas. Além disso, o Firebird usa versões de registros — cada UPDATE gera uma nova versão do registro enquanto a versão anterior permanece para garantir leitura consistente. Por isso, páginas antigas podem conter versões de registros que o banco já descartou logicamente mas que a forense ainda consegue ler.

Páginas de índice (index pages): armazenam os índices B-tree do banco. Além disso, a corrupção de páginas de índice não afeta os dados — os registros existem nas data pages independentemente dos índices.

Páginas de sistema (system pages): contêm o dicionário de dados — definições de tabelas, colunas, stored procedures e triggers. A Crowdertech lê essas páginas para reconstruir o esquema antes de extrair os dados. Para entender como isso funciona na prática, veja recuperação de banco de dados sem backup.

Causas mais comuns de FDB corrompido

Shutdown abrupto do servidor: o Firebird mantém transações ativas em memória. Quando o servidor cai sem encerrar as transações corretamente, a header page pode ficar com OAT e OIT inconsistentes. Além disso, páginas com escritas parciais ficam com checksum inválido.

Arquivo FDB em rede (UNC path ou mapeamento de drive): o Firebird não foi projetado para operar com o arquivo FDB em compartilhamento de rede — apenas o servidor Firebird deve acessar o arquivo diretamente. Quando múltiplos clientes acessam o FDB via rede, a corrupção é quase inevitável ao longo do tempo. Portanto, essa é a causa mais comum de FDB corrompido em escritórios.

Disco com setores defeituosos: quando o Firebird tenta ler ou escrever em um setor defeituoso, a página correspondente fica corrompida. Além disso, o Firebird pode continuar operando por algum tempo sem reportar erro — corrompendo silenciosamente mais páginas durante o período.

Antivírus abrindo o FDB: alguns antivírus tentam fazer scan do arquivo FDB em tempo real enquanto o Firebird escreve nele. Esse acesso concorrente pode corromper páginas em escrita. Por isso, o arquivo FDB sempre deve estar na lista de exclusões do antivírus.

Interrupção durante backup com gbak: o utilitário gbak do Firebird cria um backup lógico — não uma cópia física. Quando o gbak é interrompido no meio, o FDB original fica intacto. Contudo, se houve tentativa de restauração (gbak -r) que foi interrompida, o FDB destino pode ficar em estado inconsistente.

O que nunca fazer com FDB corrompido

Não execute gfix -mend sem backup físico do FDB: o gfix -mend marca páginas corrompidas como usáveis e tenta reparar inconsistências de transação. Contudo, ele faz isso sobrescrevendo os metadados de controle — o que pode destruir dados que ainda existem nas páginas marcadas como corrompidas. Portanto, faça sempre uma cópia física do arquivo antes de qualquer execução de gfix.

Não tente gbak no FDB corrompido: o gbak lê o banco logicamente — passando pelo motor do Firebird. Se o banco não sobe ou tem páginas corrompidas, o gbak aborta, pula registros ou — pior — exporta registros corrompidos silenciosamente. Além disso, o dump resultante pode parecer completo mas ter dados incorretos.

Não delete o FDB para recriar o banco: parece óbvio, mas acontece. Deletar o FDB elimina qualquer possibilidade de recuperação forense. Além disso, recriar o banco e tentar reimportar dados de outras fontes raramente recupera tudo.

Não execute sweep manual enquanto o banco está com erro: o gfix -sweep remove versões antigas de registros do banco. Quando executado em um FDB com páginas corrompidas, o sweep pode agravar a corrupção ao tentar acessar exatamente as páginas danificadas.

Como a Crowdertech recupera FDB corrompido

O processo começa pela cópia física do arquivo FDB — sem passar pelo motor do Firebird. Dessa forma, o arquivo original fica protegido durante toda a análise.

Em seguida, a Crowdertech lê o arquivo página a página, identifica quais estão íntegras e quais estão corrompidas. Além disso, reconstrói o esquema do banco a partir das páginas de sistema — independentemente da header page estar ou não corrompida.

Com o esquema reconstruído, a Crowdertech extrai os dados de cada tabela diretamente das data pages íntegras. Por isso, mesmo quando o Firebird não consegue abrir o arquivo, a recuperação consegue acessar a maioria dos registros. Para emergências, o atendimento da Crowdertech é 24 horas na Vila Olímpia.

Perguntas frequentes

Firebird que retorna “database file appears corrupt” tem recuperação? Sim, na maioria dos casos. Essa mensagem indica que o Firebird detectou inconsistência na header page ou em páginas críticas de sistema — mas os dados nas data pages geralmente estão íntegros.

FDB de 20 GB corrompido leva quanto tempo para recuperar? O diagnóstico é entregue em horas. A recuperação de FDB de 20 GB com corrupção parcial leva tipicamente de 24 a 48 horas.

Posso usar o FDB corrompido enquanto aguardo a recuperação? Não. Cada acesso ao FDB corrompido pode agravar a corrupção. Além disso, o Firebird pode sobrescrever dados ainda recuperáveis durante tentativas de reparo automático. Portanto, desligue o serviço Firebird e preserve o arquivo.

Conclusão

Firebird FDB corrompido sem backup tem alta taxa de recuperação quando a forense é acionada antes de tentativas de reparo com gfix ou gbak. Além disso, o arquivo único do Firebird simplifica o processo — tudo está em um só lugar. Em resumo, copie o FDB, desligue o serviço e acione especialistas. A Crowdertech recupera Firebird FDB por leitura forense direta — (11) 99630-0675.

Fontes: Firebird Documentation · NIST SP 800-86.