Uneori, dacă baza de date a bazei de date este coruptă de InterBase sau Firebird, instrumentele native de reparații (gfix) nu ajută. Acest lucru poate apărea din mai multe motive - antetul bazei de date este corupt, multe pagini sunt corupte etc.
În acest caz, este recomandat să utilizați IBFirstAid Diagnostitian gratuit de la IBSurgeon (www.ib-aid.com), a cărui funcționalitate face parte din instrumentul plătit pentru repararea bazei de date a IBFirstAid.
Acest instrument funcționează numai pe Windows, deci dacă baza de date deteriorată se află pe Linux sau pe un alt sistem Unix, trebuie să transferați fișierul bazei de date pe computer cu IBFirstAid Diagnostitian cât mai curând posibil.
Instrumentul nu necesită prezența DBMS InterBase sau Firebird, deoarece verifică fișierul bazei de date în sine (toate formatele DB existente sunt acceptate InterBase 4.0 și versiuni ulterioare și Firebird 1.0 și versiuni ulterioare).
Primul lucru pe care trebuie să-l faceți este să deschideți baza de date în IBFirstAid. În același timp, el va scana baza de date și va încerca să determine gradul de deteriorare a bazei de date.
De exemplu, rezultatul poate fi:
"Paginile nedefinite" sunt acele pagini ale bazei de date care sunt în baza de date, însă structurile interne ale bazei de date nu le indică. De exemplu, într-o bază de date nedeteriorată, aceasta ar putea fi pur și simplu pagini goale, în prezent fără date. Într-o bază de date deteriorată, aceasta poate fi fie pagini goale, fie pagini de date a căror relație cu structura internă este pierdută ca urmare a corupției.
Cu toate acestea, dacă numărul de pagini nedefinite este mic, atunci mesajul despre "pagini indeterminate" poate fi considerat simplu informativ.
Apoi, trebuie să faceți clic pe butonul Diagnoză - IBFA va verifica toate structurile bazei de date pentru consistență și interconectare. Dimensiunea bazei de date
10 gigaocteți pe calculatorul mediu (2Ghz, 2Gb RAM) vor fi verificate în aproximativ 20-40 de minute (timpul depinde foarte mult de "densitatea datelor").
După verificare, puteți începe să studiați jurnalul. Cel mai bine este să faceți clic pe butonul Jurnal detaliat și să salvați toate jurnalele pe disc făcând clic pe butonul Salvați tot. Aceasta va salva fișierul diagnostic_all.log pe disc.
Dacă faceți clic pe butonul Salvare importantă, rezultă ieșirea unui jurnal comun cu o listă de tabele, unde puteți vedea care sunt corupte. Dar suntem mai interesați de evaluarea daunelor în sine, deci este mai bine să folosiți jurnalul complet.
IBFA verifică numai tabele (și alte structuri de baze de date), dar nu și indexuri. Indicii pot fi reconstruiți după repararea bazei de date, astfel încât acestea nu sunt atât de importante. Cele mai importante date. Și este important să determinați care tabele sunt corupte și cât de mult.
De exemplu, am găsit un mesaj în jurnal
11:39:50 EROARE: Relația NNNNNN (142) este CORRUPT
Dacă în loc de NNNNNN vedeți numele real al tabelului, atunci cel puțin înseamnă că relațiile din tabela de sistem rdb $ nu sunt corupte. Dacă, în locul numelui tabelului, NOT FOUND este scris, înseamnă că tabelele de sistem sunt deteriorate, iar posibilitatea de a repara o astfel de bază de date este o mare întrebare. Repararea unei baze de date cu tabele de sistem corupte poate fi efectuată în două moduri:
- repararea manuală a IBSurgeon / iBase.ru (există o serie de restricții).
- repararea bazei de date automate dacă baza de date deteriorată a fost sub controlul instrumentului FBDataGuard.
Dacă numele tabelului este afișat corect, puteți vedea jurnalul deasupra mesajului CORRUPT. Pot fi enumerate următoarele erori:
11:39:50 INFO: Pointer page # anchor_200 verificare: găsit 8 erori.
Aceasta înseamnă că aproximativ 8 pagini din această tabelă sunt deteriorate și nu pot fi recuperate. În funcție de dimensiunea paginii de pe fiecare pagină, poate fi de la 0 la mai multe înregistrări duzină.
Prin urmare, prin căutarea cuvântului CORRUPT, trecem de la o masă la alta și estimăm cât de mult și care tabele sunt corupte.
Dacă nu există rapoarte despre pauzele de sistem (începând cu RDB $) și la sfârșitul jurnalului de diagnosticare nu există rapoarte de deteriorare critică, atunci IBFirstAID va repara cel mai probabil această bază de date.
Versiunea completă a IBFirstAid permite repararea în modul automat a peste 70% din cele mai frecvente daune ale bazei de date.