Эта страница переведена машинным переводом. Читайте английский оригинал. English

Библиотека IBSurgeon

Внутренняя проверка согласованности 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 или как сообщение об ошибке в вашем приложении, выполните эту команду, чтобы убедиться, что ваша база данных в порядке:

Code
gfix.exe -v -full -user SYSDBA -pass masterkey path_to_your_database

Если проверка gfix возвращает ошибки, база данных повреждена и требует восстановления.

Сначала попробуйте восстановление с помощью gfix:

Code
gfix.exe -mend -ig -user SYSDBA -pass masterkey path_to_your_database

а затем сделайте резервную копию базы данных:

Code
gbak.exe -b -g -user SYSDBA -pass masterkey path_to_your_database path_to_backup

и восстановление:

Code
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] и предоставьте полный текст ошибки (или скриншот).