Behebung einer beschädigten Firebird-Datenbank


8

Ich habe eine 200-GB-Firebird-Datenbank (erstellt mit Firebird 2.1.3, auf der derzeit 2.1.5 ausgeführt wird), und sie scheint beschädigt zu sein. Wenn ich versuche, ein Backup zu erstellen, erhalte ich:

Datenbankdatei erscheint beschädigt <>
falscher Seitentyp
Seite 0 ist falscher Typ (erwartet 0 gefunden 1)
gds_get_segment fehlgeschlagen

gfix endet mit a

Sackgasse

Wie kann ich es reparieren?

AKTUALISIEREN

Obwohl diese spezielle Datenbank nicht repariert wurde, ist die Lösung vermutlich IB FirstAID.

Literatur-Empfehlungen:


1
Versuchen Sie, Metadaten mit IBExpert zu exportieren . Und erstellen Sie eine neue Datenbank ohne Fehler.
Dataol

1
Versuchen Sie es mit FB First Aid . Ich habe mit diesem Tool bessere Ergebnisse erzielt.
Cesar

FB First Aid berechnet 199 US-Dollar pro drei Wiederherstellungen, sodass Sie nicht einmal eine Lizenz erwerben und das Tool besitzen können. Es ist ein bisschen steil.
Warren P

Antworten:


6

Hier ist eine kurze Schritt-für-Schritt-Anleitung:

  • Trennen Sie Benutzer und deaktivieren Sie eingehende Verbindungen zur Datenbank
  • Erstellen Sie eine Kopie der Datenbankdatei (oder zwei Kopien) und arbeiten Sie daran
  • Verwenden Sie GFIX mit der Option -v, um die Datenbankdatei zu überprüfen
  • Verwenden Sie GFIX mit -v und -f, um eine vollständige Validierung durchzuführen

Wenn das Problem nicht zu schwerwiegend ist, können Sie versuchen, die defekte Datenbank zu sichern und unter einem neuen Namen wiederherzustellen:

  • Verwenden Sie GFIX -mend, um eine beschädigte Datenbank für die Sicherung vorzubereiten
  • Verwenden Sie GBAK -b -g, um die Datenbank zu sichern. -g deaktiviert die Speicherbereinigung
  • Verwenden Sie GBAK -c, um die Sicherung in einer neuen Datenbank wiederherzustellen.

Wenn Sie erfolgreich sind, haben Sie das Problem behoben und verfügen über eine funktionierende Datenbank. Wenn nicht, können Sie versuchen, eine leere Datenbank mit derselben Struktur zu erstellen und die Daten in diese zu pumpen.

Einer der Gründe, warum das Sichern oder Wiederherstellen fehlschlagen kann, besteht darin, dass einige fehlerhafte Datenbankauslöser vorhanden sind und die Verbindung zur Datenbank verhindert wird. Beispielsweise kann ein Datenbank-Trigger eine Tabelle mit einem fehlerhaften Index usw. verwenden. Um dies zu umgehen, stellen Sie mit dem isql-Tool mithilfe der Option -nodbtriggers eine Verbindung zur Datenbank her und deaktivieren Sie diese Trigger. Sie können sie später aktivieren, wenn Sie andere Probleme beheben und wieder eine funktionierende Datenbank erhalten.

Ein weiterer Grund, warum die Wiederherstellung möglicherweise fehlschlägt, besteht darin, dass Sie Daten beschädigt haben, sodass einige der Gültigkeitsbeschränkungen (Prüfbeschränkungen usw.) nicht erfüllt werden können. In diesem Fall können Sie versuchen, Ihre Datenbank mit dem Befehlsschalter -N [O_VALIDITY] auf gbak wiederherzustellen.

Wenn Sie detailliertere Informationen zum Reparieren der Datenbank sowie Erläuterungen zu einigen Arten von Korruption benötigen, lesen Sie die folgende Seite:

http://www.ibphoenix.com/resources/documents/search/doc_5

Wenn alles fehlschlägt, können Sie das IBSurgeon-Tool ausprobieren, mit dem die meisten Probleme behoben und Daten extrahiert werden können. Auf der Website von IBSurgeon finden Sie außerdem ausführliche Erläuterungen zu den Ursachen der Datenbankbeschädigung und Möglichkeiten zur Behebung:

http://ib-aid.com/option,com_content/task,view/id,58/Itemid,62/

Überprüfen Sie diese Anleitung http://www.firebirdfaq.org/faq324/


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.