Внутренняя проверка согласованности gds - как восстановить базы данных Firebird/InterBase
Oleg Matveev, 20-Nov-2014
Когда экземпляр Firebird (или InterBase) не может выполнить некоторую операцию без гарантии того, что целостность базы данных не будет нарушена, он вызывает ошибку (bugcheck) и прерывает текущую операцию.
Текст такой ошибки Firebird начинается с обязательного префикса “internal gds software consistency check (can’t continue after bugcheck)” (для последних версий Firebird - “internal Firebird software consistency check”), после которого следует фактический текст ошибки (например, “decompression overran buffer (179)”).
Часто ошибки “internal software consistency check” означают, что база данных Firebird повреждена (однако это не является правилом) - то есть нарушена целостность внутреннего образа базы данных, и её необходимо исправить для продолжения нормальной работы.
Если вы видите такую ошибку в вашем firebird.log или как сообщение об ошибке в вашем приложении, выполните эту команду, чтобы убедиться, что ваша база данных в порядке:
gfix.exe -v -full -user SYSDBA -pass masterkey path_to_your_database
Если проверка gfix возвращает ошибки, база данных повреждена и требует восстановления.
Сначала попробуйте восстановление с помощью gfix:
gfix.exe -mend -ig -user SYSDBA -pass masterkey path_to_your_database
а затем сделайте резервную копию базы данных:
gbak.exe -b -g -user SYSDBA -pass masterkey path_to_your_database path_to_backup
и восстановление:
gbak.exe -c -v -user SYSDBA -pass masterkey path_to_backup path_to_new_database
Если возникла проблема во время gfix/gbak, восстановите поврежденную базу данных с помощью инструмента IBSurgeon FirstAID - большинство ошибок “internal Firebird consistency check” можно исправить с его помощью; FirstAID был специально разработан для работы с серьёзными повреждениями баз данных.
Кроме того, если у вас повреждена база данных Firebird или InterBase, пожалуйста, свяжитесь с нашей службой поддержки: [email protected] и предоставьте полный текст ошибки (или скриншот).