Оцінка пошкоджень бази даних за допомогою ibfirstaid diagnostician


Іноді при пошкодженні бази даних СУБД InterBase або Firebird штатні засоби ремонту (gfix) не допомагають. Це може відбуватися з різних причин - пошкоджений заголовок бази даних, пошкоджено багато сторінок, і т. Д.

У такому випадку рекомендується використовувати безкоштовний інструмент IBFirstAid Diagnostitian від IBSurgeon (www.ib-aid.com), функціональність якого є частиною платного інструменту для ремонту баз даних IBFirstAid.


Цей інструмент працює тільки на Windows, тому якщо пошкоджена база даних знаходиться на Linux або інший Unix-системі, потрібно файл БД якнайшвидше перенести на комп'ютер з IBFirstAid Diagnostitian.

Інструменту не потрібна наявність СУБД InterBase або Firebird, т. К. Він перевіряє файл БД самостійно (підтримуються всі існуючі формати БД InterBase 4.0 і вище і Firebird 1.0 і вище).

Перше, що потрібно зробити, це відкрити базу даних в IBFirstAid. При цьому він просканує БД і спробує визначити ступінь пошкодження БД.

Наприклад, висновок може бути таким:


"Невизначені сторінки" - це ті сторінки БД, які є в базі даних, але внутрішні структури БД на них не вказують. Наприклад, в непошкодженій БД це можуть бути просто порожні сторінки, в даний час вільні від даних. В пошкодженої БД це можуть бути як порожні сторінки, так і сторінки з даними, взаємозв'язок яких з внутрішньою структурою втрачена в результаті пошкодження.

Однак, якщо кількість undefined pages невелика, то повідомлення про "невизначених сторінках" можна вважати просто інформаційним.

Далі, необхідно натиснути кнопку Diagnose - IBFA перевірить всі структури БД на цілісність і взаємопов'язаність. База даних розміром

10 гігабайт на середньому комп'ютері (2Ghz, 2Gb RAM) перевіриться приблизно за 20-40 хвилин (час дуже сильно залежить від «щільності даних»).

Після перевірки можна приступати до вивчення балки. Найкраще натиснути на кнопку Detailed Log, і зберегти все логи на диск, натиснувши кнопку Save All. При цьому на диск буде збережений файл diagnostics_all.log.

Натискання на кнопку Save Important призведе до висновку загального балки з перерахуванням таблиць, де можна подивитися які з них пошкоджені. Але нас більше цікавить сама оцінка ушкоджень, тому краще скористатися повним балкою.

IBFA перевіряє тільки таблиці (а також інші структури БД), але не індекси. Індекси можна перебудувати після ремонту БД, тому вони не так важливі. Найважливіше дані. І важливо визначити, які таблиці пошкоджені, і наскільки.

Отже, наприклад, ми знайшли в балці повідомлення

11:39:50 ERROR: Relation NNNNNN (142) is CORRUPT


Якщо замість NNNNNN ви бачите справжнє ім'я таблиці, то принаймні це говорить про те, що системна таблиця rdb $ relations не пошкоджена. Якщо ж замість імені таблиці написано NOT FOUND, то це означає, що пошкоджені системні таблиці, і можливість ремонту такої БД знаходиться під великим питанням. Ремонт БД з пошкодженими системними таблицями може бути здійснений двома способами:
  1. ручний ремонт IBSurgeon / iBase.ru (мається ряд обмежень).
  2. автоматичний ремонт БД, якщо пошкоджена база даних перебувала під контролем інструменту FBDataGuard.
В інших випадках можна вважати, що ремонт бази даних неможливий, т. К. Неможливо встановити як мінімум оригінальні імена таблиць, не кажучи про те, що в такий БД можуть бути пошкоджені та інші системні таблиці.

Якщо ж ім'я таблиці показується коректно, то можна подивитися лог вище повідомлення CORRUPT. Там можуть бути перераховані наступні помилки:

11:39:50 INFO: Pointer page # anchor_200 checking: found 8 errors.

Це означає, що приблизно 8 сторінок цієї таблиці пошкоджені і не можуть бути відновлені. Залежно від розміру сторінки на кожній сторінці може знаходитися від 0 до кілька десятків записів.

Так, шляхом пошуку слова CORRUPT, переходимо від однієї таблиці до іншої, і оцінюємо, скільки даних і в яких таблицях пошкоджено.

Якщо немає повідомлень про поломки системних таблиць (що починаються з RDB $), і в кінці балки діагностики немає повідомлень про критичні ушкодженнях, то IBFirstAID з високою ймовірністю полагодить цю базу даних.

Повна версія IBFirstAid дозволяє ремонтувати в автоматичному режимі понад 70% найбільш часто зустрічаються ушкоджень БД.

Схожі статті