Внутрішня перевірка узгодженості 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] та надайте повний текст помилки (або скріншот).