Wewnętrzna kontrola spójności oprogramowania gds - jak odzyskać bazy danych Firebird/InterBase
Oleg Matveev, 20-listopada-2014
Gdy instancja Firebird (lub InterBase) nie może wykonać pewnej operacji bez gwarancji, że spójność bazy danych nie zostanie naruszona, zgłasza błąd (bugcheck) i przerywa bieżącą operację.
Taki tekst błędu Firebird zaczyna się od obowiązkowego prefiksu “internal gds software consistency check (can’t continue after bugcheck)” (dla najnowszych wersji Firebird jest to “internal Firebird software consistency check”), a następnie pojawia się właściwy tekst błędu (np. “decompression overran buffer (179)”).
Często błędy “internal software consistency check” oznaczają, że baza danych Firebird jest uszkodzona (jednak nie jest to regułą) - tj. spójność wewnętrznego obrazu bazy danych jest naruszona i powinna zostać naprawiona, aby kontynuować normalną pracę.
Jeśli widzisz taki błąd w swoim firebird.log lub jako komunikat błędu w swojej aplikacji, uruchom to polecenie, aby upewnić się, że Twoja baza danych jest w porządku:
gfix.exe -v -full -user SYSDBA -pass masterkey path_to_your_database
Jeśli walidacja gfix zwróci błędy, baza danych jest uszkodzona i wymaga odzyskania.
Najpierw spróbuj odzyskać dane za pomocą gfix:
gfix.exe -mend -ig -user SYSDBA -pass masterkey path_to_your_database
a następnie wykonaj kopię zapasową bazy danych:
gbak.exe -b -g -user SYSDBA -pass masterkey path_to_your_database path_to_backup
i przywróć:
gbak.exe -c -v -user SYSDBA -pass masterkey path_to_backup path_to_new_database
Jeśli wystąpi problem podczas gfix/gbak, odzyskaj uszkodzoną bazę danych za pomocą narzędzia IBSurgeon FirstAID - większość błędów “internal Firebird consistency check” można naprawić za jego pomocą; FirstAID został specjalnie zaprojektowany do radzenia sobie z poważnymi uszkodzeniami baz danych.
Ponadto, jeśli masz uszkodzoną bazę danych Firebird lub InterBase, skontaktuj się z naszym wsparciem: [email protected] i podaj pełny tekst błędu (lub zrzut ekranu).