Interne GDS-Softwarekonsistenzprüfung - wie man Firebird/InterBase-Datenbanken wiederherstellt
Oleg Matveev, 20. November 2014
Wenn eine Firebird- (oder InterBase-) Instanz eine Operation nicht durchführen kann, ohne die Gewährleistung, dass die Datenbankkonsistenz nicht beeinträchtigt wird, löst sie einen Fehler (Bugcheck) aus und unterbricht die aktuelle Operation.
Ein solcher Firebird-Fehlertext beginnt mit dem obligatorischen Präfix “internal gds software consistency check (can’t continue after bugcheck)” (bei neueren Firebird-Versionen “internal Firebird software consistency check”), gefolgt vom eigentlichen Fehlertext (z. B. “decompression overran buffer (179)”).
Oft bedeuten “internal software consistency check”-Fehler, dass die Firebird-Datenbank beschädigt ist (dies ist jedoch keine Regel) - d. h., die Konsistenz des internen Datenbank-Images ist gestört und sollte behoben werden, um die normale Arbeit fortzusetzen.
Wenn Sie einen solchen Fehler in Ihrer firebird.log oder als Fehlermeldung in Ihrer Anwendung sehen, führen Sie diesen Befehl aus, um sicherzustellen, dass Ihre Datenbank in Ordnung ist:
gfix.exe -v -full -user SYSDBA -pass masterkey Pfad_zu_Ihrer_Datenbank
Wenn die gfix-Validierung Fehler zurückgibt, ist die Datenbank beschädigt und erfordert eine Wiederherstellung.
Versuchen Sie zuerst die Wiederherstellung mit gfix:
gfix.exe -mend -ig -user SYSDBA -pass masterkey Pfad_zu_Ihrer_Datenbank
und sichern Sie dann die Datenbank:
gbak.exe -b -g -user SYSDBA -pass masterkey Pfad_zu_Ihrer_Datenbank Pfad_zum_Backup
und stellen Sie sie wieder her:
gbak.exe -c -v -user SYSDBA -pass masterkey Pfad_zum_Backup Pfad_zur_neuen_Datenbank
Wenn es ein Problem während gfix/gbak gibt, stellen Sie die beschädigte Datenbank mit dem IBSurgeon FirstAID-Tool wieder her - die Mehrheit der “internal Firebird consistency check”-Fehler kann damit behoben werden; FirstAID wurde speziell für die Behandlung schwerer Datenbankbeschädigungen entwickelt.
Wenn Sie außerdem eine beschädigte Firebird- oder InterBase-Datenbank haben, kontaktieren Sie bitte unseren Support: [email protected] und senden Sie den vollständigen Fehlertext (oder einen Screenshot).