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:
corruption
firebird
Sergei Ousynin
quelle
quelle
Antworten:
Hier ist eine kurze Schritt-für-Schritt-Anleitung:
Wenn das Problem nicht zu schwerwiegend ist, können Sie versuchen, die defekte Datenbank zu sichern und unter einem neuen Namen 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/
quelle
Sie können die Datenbankdatei mit einem Hex-Editor öffnen und den falschen Seitentyp von 0 bis 1 korrigieren, wie unten erläutert. Es hat bei mir funktioniert. http://forums.devshed.com/firebird-sql-development-61/corrupt-database-gifix-doesnt-fix-948653.html
quelle