1. Was ist IBSurgeon FirstAID?
IBSurgeon FirstAID ist ein Werkzeug, das beschädigte Firebird- oder InterBase-Datenbanken automatisch diagnostizieren und reparieren kann.
Es kann Beschädigungen reparieren, mit denen weder gbak noch gfix umgehen können. Es verwendet seine eigene Schicht für den Datenbankzugriff auf niedriger Ebene, ohne die InterBase- oder Firebird-Engine zu verwenden, was echte "chirurgische" Operationen ermöglicht und Datenbanken reparieren kann, wenn alle anderen Standardmechanismen versagen.
1.1. Unterstützte Versionen
FirstAID 8.0 unterstützt die folgenden Versionen von Firebird und InterBase:
-
Firebird 5.0, 4.0, 3.0, 2.5, 2.1, 2.0, 1.5, 1.0
-
InterBase 4.x, 6.x, 7.0, 7.1, 7.5, 2007, 2009, XE/XE3, XE7, 2017, 2020
Wenn Sie Probleme mit InterBase 5.x oder anderen Versionen haben, kontaktieren Sie bitte [email protected].
1.2. FirstAID Überblick
IBSurgeon FirstAID 8.0 kann 3 Arten von Wiederherstellungsoperationen durchführen:
-
Direkte Wiederherstellung: Zum Reparieren der ursprünglichen beschädigten Datenbank an Ort und Stelle. Nach der direkten Wiederherstellung müssen Sie diese mit gfix und gbak (Standardwerkzeuge aus der Firebird-Distribution) abschließen.
-
Datenextraktion: Zum Anzeigen und Exportieren von Daten aus der beschädigten Datenbank in eine Datenbank mit derselben Struktur (leer oder alte intakte Kopie) oder zum teilweisen Extrahieren von Daten.
-
Behebung von nbackup-Fehlern: Zur Reparatur von Firebird-Datenbanken, die im Backup-Status hängen (wenn nbackup -n oder -fixup nicht richtig funktioniert).
Wenn Sie eine beschädigte Datenbank haben und diese auf wiederherstellbare Daten überprüfen möchten, öffnen Sie die Datenbank, wählen Sie die erforderliche Datenbank und verwenden Sie die Registerkarte Preview (diese Funktion ist in der kostenlosen Version ohne Registrierung verfügbar).
Wenn Sie die gesuchten Daten sehen können und sich für die Wiederherstellung der Datenbank entscheiden, wird empfohlen, zuerst eine direkte Wiederherstellung durchzuführen (verwenden Sie immer eine Kopie der beschädigten Datenbankdatei!) und nur bei Problemen Extract zu verwenden, um Daten in eine neue Datenbank zu exportieren.
2. Wie man Daten in einer beschädigten Firebird/InterBase-Datenbank mit FirstAID anzeigt
Wenn Sie Daten in der beschädigten Datenbank anzeigen müssen, können Sie dies mit der kostenlosen Version von FirstAID tun. Starten Sie FirstAID, klicken Sie auf "Open corrupted Database" (wenn Sie eine Multi-Volume-Datenbank haben, wählen Sie File\Open multi-file database aus dem Menü).

Danach wird FirstAID Sie bitten, die ODS-Version zu bestätigen.

Wenn die Header-Seite beschädigt ist, zeigt FirstAID eine leere Zeile an, und Sie müssen die richtige Version Ihrer Datenbank aus der Dropdown-Liste auswählen.
Dann werden Sie aufgefordert, die Seitengröße zu bestätigen:

Wenn der Header der Datenbank beschädigt ist, müssen Sie die richtige Seitengröße aus der Dropdown-Box auswählen. Am häufigsten ist die Seitengröße:
-
4096 für Firebird 2.x
-
1024 für InterBase und Firebird 1.x
-
8192 für Firebird 3, 4 und 5
Wenn Sie die falsche Seitengröße auswählen, sehen Sie einen hohen Prozentsatz in der Zeile "Bad pages" der Registerkarte "Pages Summary". Wenn Ihre erste Wahl falsch erscheint, versuchen Sie, die Datenbank mit verschiedenen Seitengrößen zu öffnen, um den richtigen Wert zu finden.
Nach dem Öffnen der Datenbank sehen Sie links eine Liste von Tabellen und rechts eine Übersicht der Datenbankseiten:

Die wichtigste Information ist der Prozentsatz der "Bad pages" - er gibt einen Eindruck davon, wie viele Datenseiten nicht gelesen werden können und welche Datenverluste zu erwarten sind.
-
0% fehlerhafte Seiten bedeutet normalerweise, dass Probleme auf Datensatzebene oder im Systembereich vorliegen,
-
1-2% bedeutet, dass die Datenbank abgeschnitten wurde oder die Festplatte beschädigt ist (dieser % entspricht in etwa den Verlusten in der Datenbank),
-
50% oder 75% weist normalerweise darauf hin, dass Sie die falsche Seitengröße ausgewählt haben,
-
In einigen Fällen kann fast die gesamte Datenbank beschädigt sein und daher nicht wiederhergestellt werden.
Nützliche Informationen zur Tabellenliste:
-
Doppelklicken Sie auf einen Tabellennamen, um Daten von der ersten Datenseite dieser Tabelle zu sehen. Sie können mit dem Navigator (Pfeile <<, <, >, >>) auf der Registerkarte "Preview" durch die Datenseiten blättern.
Verwenden Sie die Vorschau, um die neuesten Datensätze zu sehen und die Menge der guten Daten für die Tabelle abzuschätzen.

-
In der Spalte «Pages» wird die Anzahl der für die ausgewählte Tabelle gefundenen Datenseiten angezeigt, was der Größe der Tabelle entspricht.

-
FirstAID hebt leere Tabellennamen mit hellrot hervor, während Tabellen mit Daten schwarze Schrift haben.
-
Im Falle einer schweren Beschädigung der Systemtabellen wird FirstAID alle Tabellen mit Problemen durch hellrot hervorheben.

-
In der Spalte «Formats» wird die Anzahl der erwarteten Datensatzformate und die Anzahl der vorhandenen Formate angezeigt.
Im Falle fehlender Formate oder wenn Sie keine normalen Tabellennamen oder Daten darin sehen, lesen Sie den Abschnitt "External metadata" am Ende dieser Anleitung!
3. Wie bekommt man eine Vollversion von FirstAID
Nach der Vorschau Ihrer Daten und der Bestätigung, dass es sich lohnt, die Datenbank wiederherzustellen, kaufen Sie die entsprechende FirstAID-Lizenz. Sie erhalten eine automatische Bereitstellungsbestätigungs-E-Mail von [email protected].
Normalerweise dauert es etwa 10-15 Minuten, bis Sie die E-Mail mit der Lizenz erhalten. Überprüfen Sie den Spam-Ordner, wenn Sie sie nicht erhalten haben!
FirstAID wird auf Basis "pro Datenbank" lizenziert, mit den folgenden Kaufoptionen (https://ib-aid.com/en/ibsurgeon-firstaid/):
-
Von 1 bis 3 Datenbanken,
-
Bis zu 50 Datenbanken,
-
Weitere Wiederherstellungen sind im Rahmen des Enterprise-Abonnements verfügbar.
Upgrades und zusätzliche Pakete
Wenn Sie eine ältere Version von FirstAID haben oder alle Aktivierungen für die Wiederherstellung verwendet haben, können Sie das Upgrade für 5, 50 oder 100 Datenbankwiederherstellungen mit Rabatt hier kaufen: https://ib-aid.com/en/upgrades-ibsurgeon/
Normalerweise wird die Bestellung innerhalb weniger Minuten bearbeitet, und dann erhalten Sie eine automatische E-Mail aus dem Online-Shop (PayProGlobal) mit den notwendigen Informationen (im Wesentlichen Benutzername und Passwort) zur Durchführung der Wiederherstellung (siehe Details unten im Abschnitt "Registrierung").
Wenn Sie das Passwort nicht innerhalb von 1-2 Stunden erhalten haben, überprüfen Sie bitte Ihren Antispam-Ordner (und Einstellungen) und schreiben Sie dann eine E-Mail an [email protected] mit Ihrer Bestellnummer, um die Lieferung zu beschleunigen.
Wenn Sie FirstAID von www.ib-aid.com installiert haben und dann die Lizenz gekauft haben, müssen Sie FirstAID nicht aus dem Download-Bereich des Deploy Centers neu installieren – geben Sie einfach E-Mail und Passwort ein, wenn Sie dazu aufgefordert werden. Installieren Sie FirstAID nur neu, wenn Sie eine ältere Version installiert haben.
Versuchen Sie, die Datenbank mit Direct Fix wiederherzustellen, bevor Sie versuchen, alle Daten zu extrahieren: DirectFix kann schneller sein als der Extract-Prozess (aber vergessen Sie nicht, vor DirectFix eine Kopie zu erstellen!). |
4. DirectFix-Wiederherstellung mit FirstAID
Um eine Firebird-Datenbank direkt wiederherzustellen:
-
Stoppen Sie den Firebird-Server und erstellen Sie eine Kopie der ursprünglichen Datenbankdatei! Dies ist wichtig für mögliche zukünftige Schritte (Extraktion usw.).
-
Starten Sie FirstAID.
-
Öffnen Sie die beschädigte Datenbank und warten Sie, bis sie geladen ist.
-
Nach dem Öffnen der Datenbank aktiviert FirstAID Menüaktionen zum Diagnostizieren, Reparieren und Exportieren.
-
Wählen Sie "Direct→Direct Diagnose" aus dem Menü.
-
Schauen Sie im FirstAID-Protokoll nach Informationsmeldungen und Fehlern.
Beispiel für eine Informationsmeldung:
12:40:55 DEBUG: Checking INVNT_SALDO (147)... 12:40:56 INFO: Relation INVNT_SALDO (147) is OK
Beispiel für eine Fehlermeldung:
18.02.2014 18:45:31 ERROR: Found 1 record errors on datapage#2069 18.02.2014 18:45:31 ERROR: Error on data page #2069 18.02.2014 18:45:32 INFO: Pointer page #243 checking: found 177 errors. 18.02.2014 18:45:32 ERROR: Error in checking relation #160 Found 1 errors. 18.02.2014 18:45:32 ERROR: Relation MOVIMENTA1 (160) is CORRUPT
-
Nach "Direct Diagnose" wählen Sie "Direct→Direct Fix".
Figure 8. Direct Diagnose (nur Überprüfung) und DirectFix (Wiederherstellung vor Ort) -
Um die Wiederherstellung zu starten, geben Sie hier Ihre E-Mail-Adresse (die für den Lizenzkauf verwendet wurde) und das Passwort (aus der E-Mail von IBSurgeon) ein.
Figure 9. Geben Sie hier die E-Mail-Adresse und das Passwort ein, die Sie in der E-Mail von IBSurgeon erhalten habenKlicken Sie dann auf "Generate UNLK now".
Bitte beachten Sie, dass FirstAID die UNLK-Datei für diese Datenbank im Ordner C:\ProgramData\FBFirstAID3\Unlocks speichern wird, sodass beim nächsten Öffnen dieser Datenbankdatei auf demselben Computer FirstAID nicht nach der Registrierung fragen wird.
-
Der Reparaturprozess dauert ungefähr so lange wie die Diagnose.
-
Nach der Reparatur klicken Sie auf "Direct\Final Steps" und folgen Sie den Anweisungen:

Endschritte nach der FirstAID Direct Fix-Reparatur:
Nach dem IBSurgeon FirstAID DirectFix-Reparaturverfahren müssen Sie Standardmittel verwenden, um die Wiederherstellung abzuschließen. Bitte speichern Sie die Ergebnisse jedes Schritts für mögliche zukünftige Verwendung.
Selbst wenn gfix-Schritte fehlschlagen, versuchen Sie trotzdem, gbak (Schritte 3 und 4) auszuführen!
-
Führen Sie gfix.exe (es befindet sich im Verzeichnis "Bin" der Firebird/InterBase-Installation) mit der folgenden Befehlszeile aus:
gfix.exe -v -full-user SYSDBA -password your_sysdba_password Disk:\Path\your_database.fdb
-
Danach führen Sie gfix.exe mit einer anderen Schalter-Kombination aus:
gfix.exe -mend -ig -user SYSDBA -password your_sysdba_password Disk:\Path\your_database.fdb
-
Gfix behebt kleinere Beschädigungen und bereitet die Datenbank für das Backup vor. Dann müssen Sie die Datenbank mit gbak.exe (im selben Verzeichnis mit gfix.exe) sichern. Führen Sie das Backup mit dem folgenden Befehl aus:
gbak.exe -b -g -ig -user SYSDBA -password your_sysdba_password Disk:\Path\your_database.fdb Disk:\Path\backup.fbk
-
Stellen Sie die Datenbank aus dem Backup wieder her. Führen Sie den Befehl aus:
gbak -c -user SYSDBA -password your_sysdba_password Disk:\Path\backup.fbk Disk:\Path\your_database.fdb
-
Nur wenn Sie eine InterBase-Datenbank haben! – FirstAID kann die InterBase-Datenbank während der Wiederherstellung in den Nur-Lese-Modus versetzen. Um sie wieder auf Lese-Schreib-Modus umzustellen, führen Sie den folgenden Befehl aus:
gfix.exe -mode read_write -user SYSDBA -password your_sysdba_password Disk:\Path\your_database.fdb
Das war’s - jetzt ist Ihre Datenbank repariert.
5. Wiederherstellung durch Extraktion
Wenn Sie bereits versucht haben, die Datenbank mit DirectFix zu reparieren und es nicht möglich war, ein Backup der Datenbank mit den finalen Schritten zu erstellen, fahren Sie mit der Extraktion fort.
Wir gehen davon aus, dass Sie eine unberührte Dateikopie der ursprünglichen beschädigten Datenbank haben, die Sie vor dem Direct Fix-Schritt erstellt haben. Wenn ja, erstellen Sie bitte erneut eine Kopie davon und führen Sie alle weiteren Operationen mit der Kopie durch. Es ist wichtig, FirstAID auf der intakten ursprünglichen (vor Direct Fix) Kopie der beschädigten Datenbank auszuführen! |
5.1. Überblick über den Datenextraktionsprozess
FirstAID liest die Datenbank auf niedriger Ebene (mit seiner eigenen Datenzugriffsschicht, nicht mit der Firebird-Engine) und exportiert alle guten Datensätze in eine neue Datenbank.

Es gibt mehrere Dinge zu bedenken:
-
Was wird die Zieldatenbank für die exportierten Daten sein?
-
Verbinden und exportieren Sie Daten in eine leere Datenbank mit derselben Struktur (Metadaten) wie die beschädigte Datenbank (bevorzugte Option).
-
Erstellen Sie eine neue leere Datenbank ohne Metadaten (FirstAID kann sie erstellen, aber Metadaten könnten unvollständig sein) und exportieren Sie dorthin
-
-
Mehr Daten VS Mehr Konsistenz.
In der beschädigten Datenbank könnten einige Primärschlüssel fehlen und einige Datenbank-Constraints (wie NOT NULL, CHECK, FOREIGN KEY usw.) könnten verletzt sein, also gibt es eine Wahl: Verletzte Constraints ausschalten und potentiell inkonsistente Daten in die Datenbank einfügen lassen, oder alle Regeln durchsetzen und inkonsistente Daten überspringen.
-
Mehr Daten. Dies ist die bevorzugte Option, da Sie nach dem Export die Ergebnisse überprüfen und Datenbank-Constraints manuell durchsetzen können. Es ist üblich, dass in der beschädigten Datenbank einige nicht relevante Constraints existieren, daher ist es besser, so viele Daten wie möglich zu speichern.
-
Mehr Integrität. Wenn Sie nicht viele Fehler sehen, können Sie diese Option versuchen. Alle Constraints und Foreign Keys werden durchgesetzt, und die Datensätze, die nicht den Datenbank-Constraints entsprechen, werden in der Zieldatenbank gelöscht.
-
Manueller Modus. Sie haben Optionen, um den Exportprozess manuell zu optimieren. Wir gehen davon aus, dass Sie wissen, was Sie tun, wenn Sie den manuellen Modus wählen und die Parameter selbst festlegen.
-
5.2. Export in die leere Datenbank mit denselben Metadaten
-
Öffnen Sie die beschädigte Datenbank in FirstAID. Wichtig: Wenn Sie eine Firebird-Datenbank der Versionen 5, 4, 3 wiederherstellen, die die Verwendung des eingebetteten Firebird-Servers für die Extraktion erfordern, führen Sie FirstAID mit Administratorrechten aus!
-
Wählen Sie "Connect to DB":
Figure 12. Wählen Sie "Connect to DB" -
Wählen Sie die Zieldatenbank für den Export
Figure 13. Wählen Sie die vorhandene Datenbank als Ziel des Extrakts
Verbindung
In der Dropdown-Liste des Feldes "Connection" können Sie einen externen Server angeben oder den eingebetteten lokalen FirstAID-Server verwenden (aufgelistet als Internal Firebird 3, 4, 5).
Für Firebird-Version 3, 4, 5 ist es notwendig, den eingebetteten lokalen Server (Internal Firebird N) mit der entsprechenden Version auszuwählen. Und Sie müssen FirstAID mit Administratorrechten ausführen, um eingebettete Server (für Firebird-Versionen 5, 4, 3) für die Extraktion zu verwenden. |
Server-Name/IP und Port
Wenn Sie "External server" ausgewählt haben, müssen Sie Verbindungsdetails für die Zieldatenbank angeben. Standardmäßig ist es auf localhost und 3050 (Standard-Firebird/InterBase-Port) eingestellt.
Pfad zum Client
Der Pfad zur Client-Bibliothek (fbclient.dll oder gds32.dll) wird automatisch festgelegt; er hängt von der Version der Quelldatenbankdatei ab (notwendige Client-Bibliotheken werden mit FirstAID mitgeliefert).
Wenn Sie Daten lieber mit einer anderen Serverversion als der ursprünglichen beschädigten Datenbank exportieren möchten, müssen Sie die richtige Client-Bibliothek von diesem Server auswählen.
FirstAID passt die Parameter "SQL Dialect" und "Default charset" automatisch an, wenn die Header-Seite der beschädigten Datenbank nicht beschädigt ist, andernfalls müssen Sie diese Parameter selbst festlegen.
Standardmäßig setzt FirstAID die Zieldatenbank in den Forced Writes OFF-Modus, um den Exportprozess zu beschleunigen. Sie können nach Abschluss der Wiederherstellung vor dem Produktionseinsatz mit dem Befehl auf Forced Writes ON umstellen
gfix -write sync databasenamepath.fdb -user SYSDBA -pass your_password
Stellen Sie sicher, dass der Firebird (oder InterBase) Server zu diesem Zeitpunkt läuft!
Klicken Sie auf "Connect".
Bitte beachten Sie - wenn Sie eingebettetes Firebird verwenden (Optionen Integrated Firebird 3, 4, 5), müssen Sie FirstAID mit Administratorrechten ausführen.
UDFs
Nach dem Herstellen der Verbindung mit der Zieldatenbank überprüft FirstAID auf UDF (benutzerdefinierte Funktionen in externer dll). Wenn es UDFs gibt, erscheint die folgende Meldung:

Das bedeutet, dass es UDF in der Zieldatenbank gibt, und Sie müssen UDFs dll-Datei(en) bereitstellen, um die korrekte Extraktion zu gewährleisten. FirstAID zeigt Ihnen den/die Namen der UDF-Bibliotheken an; in diesem Fall ist es "ib_udf2.dll".
Fehlende UDF-DLLs können die ordnungsgemäße Exportverarbeitung verhindern!
Sie müssen zum UDF-Ordner Ihrer Firebird/InterBase-Installation gehen und überprüfen, ob die erforderliche dll-Datei in diesem Ordner ist. Wenn nicht, kopieren Sie sie vom Server, auf dem sich ursprünglich Ihre beschädigte Datenbank befand. Für Firebird-Versionen 4 und 5 müssen Sie den Zugriff auf UDF in firebird.conf einrichten.
5.2.1. Was, wenn ich keine leere gute Kopie einer Datenbank habe?
Wenn Sie keine leere gute Kopie haben, können Sie sie erstellen:
-
Finden Sie eine beliebige gute Kopie der beschädigten Datenbank (wahrscheinlich wird es eine alte gute Kopie sein).
-
Erstellen Sie ein Backup mit der Option Nur-Metadaten:
gbak -b -g -m -user SYSDBA -pass your_password Disk:\Path_to_good_db.fdb Disk:\backup.fbk
-
Stellen Sie mit der Option Nur-Metadaten wieder her:
gbak -c -m Disk:\backup.fbk Disk:\path_to_empty_metadata_db.fdb -user SYSDBA -pass your_password
Verwenden Sie diese neue leere Datenbank als Ziel für den Export.
5.2.2. Exportprozess
Danach erscheint der folgende Dialog:

FirstAID muss eine Servicetabelle erstellen, um notwendige Exportinformationen zu speichern. Diese Tabelle wird Informationen über Datenbankeinschränkungen, Trigger, Indizes usw. enthalten.
Klicken Sie auf "Yes".
Danach öffnet FirstAID eine neue Registerkarte "Destination database":

Auf dieser Registerkarte können Sie die Liste der Tabellen der Zieldatenbank sowie Trigger, Fremdschlüssel, Prüfungen und NOT NULL-Constraints, eindeutige Schlüssel, Domains, UDFs und Generatoren (Sequenzen) sehen.
Klicken Sie dann auf "Extract All Tables":

5.2.3. Registrierung
Der folgende Dialog erscheint (wenn Sie eine Internetverbindung auf dem Computer haben, auf dem Sie FirstAID ausführen, andernfalls lesen Sie den Abschnitt "Offline-Registrierung" unten):

Geben Sie hier Ihre E-Mail-Adresse (die für den Lizenzkauf verwendet wurde) und das Passwort (aus der E-Mail von [email protected]) ein.
Klicken Sie dann auf "Generate UNLK now".
Bitte beachten Sie, dass FirstAID die UNLK-Datei für diese Datenbank im Ordner C:\ProgramData\FBFirstAID3\Unlocks speichern wird, sodass beim nächsten Öffnen dieser Datenbankdatei auf demselben Computer FirstAID nicht nach der Registrierung fragen wird.
Wenn Sie diese beschädigte Datenbank bereits auf demselben Computer registriert haben, erscheint der Registrierungsdialog nicht!
Dann erscheint dieser Dialog:

Es ist die Bestätigung, dass Sie damit einverstanden sind, Daten aus der beschädigten Datenbank in die ausgewählte zu exportieren, und es informiert Sie auch, dass Daten zu den vorhandenen Tabellen hinzugefügt werden (wenn es bereits Datensätze gab, werden sie nicht automatisch gelöscht!). Klicken Sie auf "Yes".
Wenn Sie auf "No" klicken, versucht FirstAID, die Struktur mit den Metadaten der beschädigten Datenbank als Vorlage zu erstellen. "Cancel" bricht die Operation ab.
Danach gibt es noch einen Dialog mit der endgültigen Bestätigung und einer Erinnerung an die Struktur:

Klicken Sie auf "Yes".
Dann sehen Sie einen sehr wichtigen Dialog mit Exportoptionen:

Wir empfehlen die Option "More restored data", sie schaltet alle Datenbankeinschränkungen (außer Primärschlüsseln) aus und FirstAID versucht, alle verfügbaren Daten zu exportieren.
Nach dem Export werden alle Constraints wieder eingeschaltet (für die Daten, die es zulassen). Auf der Registerkarte "Destination database" können Sie das Ergebnis überprüfen und alle Daten korrigieren oder löschen, die Sie als seltsam oder unerwünscht erachten - siehe Abschnitt "Nach dem Export" unten.
Der Modus "More data integrity" stellt alle Constraints nach dem Export wieder her und überspringt Daten, die nicht den Datenbankeinschränkungen entsprechen.
Klicken Sie auf "Ok"
Danach überwachen Sie den Extraktionsprozess.
5.2.4. Wie lange dauert die Extraktion?
Die Extraktionszeit hängt von der Größe der Datenbank und der Leistung des Computers ab; es können mehrere Minuten für kleine Datenbanken und mehrere Stunden für sehr große Datenbanken sein. Bei guter Hardware (mit SSD-Laufwerk) beträgt die Exportgeschwindigkeit ungefähr 1 GB pro 5 Minuten.
Bitte beachten Sie, dass FirstAID standardmäßig nur Datensätze aus den Benutzertabellen extrahiert und keine Primär- und Fremdschlüsselindizes, Trigger und gespeicherten Prozeduren extrahiert.
Generatorwerte werden exportiert, wenn Sie den Export aller Tabellen wählen (Sie werden danach gefragt):

oder wenn Sie sie später manuell extrahieren können:

5.3. Export in die neue leere Datenbank ohne Metadaten
Wenn Sie keine leere Datenbank mit denselben Metadaten haben, ist es möglich, eine neue Datenbank zu erstellen, Metadaten darin zu erstellen, indem Sie die Informationen aus der beschädigten Datenbank verwenden, und Daten dorthin zu exportieren.
Diese Methode ist gut für die Situation, in der Sie einfach so viele Daten wie möglich aus der beschädigten Datenbank extrahieren und sie dann auf andere Weise verarbeiten müssen.
5.3.1. Exportstruktur
Öffnen Sie die Datenbank in FirstAID und klicken Sie dann auf "Create New DB":

Zuerst sehen Sie diese Meldung:

Es warnt Sie, auf Dialekt- und Codepage-Eigenschaften des nächsten Dialogs zu achten – dies ist wichtig, wenn Sie eine beschädigte Header-Seite haben, andernfalls wird es automatisch angepasst.
Klicken Sie auf "Ok".
Dann sehen Sie den Dialog "Create new database and login":

Es wird die neue leere Datenbank erstellen, in die Daten aus der beschädigten Datenbank gepumpt werden.
Geben Sie den Pfad zur neuen Datenbank für den Export an und, falls erforderlich, ihre Kollation (wählen Sie NONE, wenn Sie es nicht wissen) und Seitengröße (8192 ist normalerweise eine gute Option).
Der Pfad zur Client-Bibliothek (fbclient.dll oder gds32.dll) wird automatisch angegeben (er wird mit FirstAID geliefert).
Klicken Sie auf "Create".
Wenn FirstAID die Datenbank nicht erstellen kann, überprüfen Sie die Einstellungen (Dialekt, Passwort, Zeichensatz, Seitengröße) und versuchen Sie es erneut. Bitte beachten Sie - wenn Sie eingebettetes Firebird verwenden (Optionen Integrated Firebird 3, 4, 5), müssen Sie FirstAID mit Administratorrechten ausführen.
Wenn die Datenbank erstellt wird, sehen Sie den folgenden Dialog:

Klicken Sie auf "No".
Danach klicken Sie auf die Schaltfläche "Export Structure" in der Hauptsymbolleiste:

Dann warten Sie auf den Abschluss des Datenbank-Metadaten-Exports:

Klicken Sie auf "Ok"
Wenn Sie sehen, dass die Anzahl der erstellten Tabellen 0 ist, gehen Sie zum Abschnitt "Quote names" dieser Anleitung, versuchen Sie, ihn zu ändern und wiederholen Sie den Prozess "Export structure".
5.4. Endschritte mit leerem Datenbankexport
Wie oben erwähnt, erstellt die Extraktion in die leere Datenbank viele wichtige Metadaten nicht. Wo bekommt man sie?
Sie können Generatorwerte und SQL-Definitionen für Primär- und Fremdschlüssel und Indizes auf den Registerkarten "Generators" und "Indices and Constraints" finden:

Es ist möglich, diese Objekte in der Exportdatenbank zu erstellen - Sie müssen diese Skripte in Ihrer Datenbank ausführen (z.B. mit isql.exe aus dem Bin-Ordner von Firebird).
Es gibt jedoch einen einfacheren Weg, die Wiederherstellung abzuschließen - pumpen Sie einfach exportierte Daten in die neue leere Datenbank mit allen notwendigen Metadaten mit dem kostenlosen Tool IBDataPump.
Sie können es herunterladen (https://github.com/hvlad/Interbase-DataPump/releases/tag/tag_3501), ausführen und die exportierte Datenbank als Quelle und die neue leere Datenbank als Ziel festlegen.
Wenn Sie jedoch diesen Punkt erreicht haben und sich entschieden haben, IBDataPump zu verwenden, wäre es wahrscheinlich besser, den Export in die leere Datenbank mit fertigen Metadaten zu wählen.
6. Nach der Extraktion
Nach der Extraktion überprüfen Sie ihre Ergebnisse.
Öffnen Sie zunächst die Registerkarte Log und suchen Sie nach Fehlern. Die Art der Extraktionsfehler gibt Ihnen einen Hinweis, was falsch ist – der häufigste Grund für Fehler ist ein Unterschied in den Tabellenstrukturen der beschädigten und leeren Datenbanken.

Am Ende des Logs gibt es einen Abschnitt "Summary info" mit Ergebnissen des Exports für jede Tabelle, wo Sie sehen können, wie viele Datensätze extrahiert und wie viele übersprungen wurden. Wenn Sie sehen, dass die Mehrheit der Datensätze der Zieldatenbank hinzugefügt wurde und nur wenige übersprungen wurden, ist das ein gutes Zeichen.
Wenn das Log groß ist, können Sie die Datei damit erhalten - der Pfad dazu ist am unteren Rand der Registerkarte angegeben.
Öffnen Sie dann die Registerkarte "Destination database" und überprüfen Sie alle Registerkarten dort auf Fehler:

Die Daten in diesen Registerkarten werden in der speziellen Tabelle gespeichert, die von FirstAID während des Exports erstellt wurde.
Sie können sich mehrmals mit der exportierten Datenbank verbinden, um verschiedene Inkonsistenzen in der exportierten Datenbank zu beheben.
6.1. Registerkarte «Existing tables»
Zeigt exportierte Daten an. Für große Datenbanken ist es nicht praktisch, durch alle Tabellen zu scrollen.
6.2. Registerkarte «Triggers»
Zeigt Trigger-Zustände an. Trigger werden während des Exports deaktiviert und danach wieder aktiviert. Fehler weisen normalerweise auf fehlende UDF-Bibliotheken hin.
Wenn Sie Fehler und inaktive Trigger sehen, bedeutet das höchstwahrscheinlich, dass der Trigger eine UDF-Bibliothek verwendet, die nicht gefunden wurde, und der Trigger nicht aktiviert werden konnte. Um dieses Problem zu beheben, legen Sie die notwendige UDF auf den Server und kompilieren Sie die Trigger neu.
6.3. Registerkarte «Domains»
Probleme können auf der Registerkarte «Domains» auftreten, wenn es CHECKs oder NOT NULL-Constraints auf Domain-Ebene gibt und diese Constraints zu Problemen führen.
Es gibt mehrere Optionen, was Sie tun können:

Es gibt die folgenden verfügbaren Operationen:
-
Deactivate all Domain constraints. Dies deaktiviert alle Constraints. Es ist nützlich, wenn ein Constraint versehentlich erstellt wurde – zum Beispiel NOT NULL für die Spalte mit NULLs in Versionen vor Firebird 3.
-
Activate all Domain constraints. Wenn Sie Probleme behoben haben, z.B. alle inkonsistenten Datensätze gelöscht haben, können Sie versuchen, alle Constraints zu aktivieren.
-
Count inconsistent items for domains. Dieser Befehl berechnet die Anzahl der Datensätze mit Problemen, die durch Domain-Constraints verursacht werden, und zeigt die Anzahl in der Spalte Inconsistent Items an.
-
Delete All inconsistent Items for domains. Wenn Sie denken, dass die Anzahl der inkonsistenten Elemente klein ist, ist es möglich, Datensätze zu löschen, die gegen die Domain-Constraint verstoßen.
-
Rescan Domains. Wenn Sie sich mit der exportierten Datenbank in einer anderen Anwendung verbunden und Domains geändert haben, können Sie auf diese Schaltfläche klicken, um Domains erneut zu scannen und den Status der Domains zu aktualisieren.
6.4. Registerkarte «Foreign Keys»

Diese Registerkarte ist am interessantesten, da sie das häufige Problem mit extrahierten Datenbanken – Inkonsistenz in Foreign Keys – behandelt. Eine solche Inkonsistenz wird durch verlorene Datensätze in einigen Tabellen verursacht, sodass andere Tabellen mit Fremdschlüsseln, die auf die Tabellen mit verlorenen Datensätzen verweisen, Fehler generieren: normalerweise «Cannot commit foreign key XXX».
Der Grund für den Fehler "Cannot commit index…» ist offensichtlich: Die Beschädigung beeinträchtigt die referenzielle Integrität der Datenbank, und Datensätze verschwinden auf magische Weise (aus Sicht des Servers).
Zum Beispiel haben Sie eine Tabelle "Customers" und eine zugehörige Tabelle "Orders", auf die mit einem Fremdschlüssel verwiesen wird. Ohne Beschädigung ist es nicht möglich, den Fremdschlüssel zu verletzen und einen Datensatz aus Customers zu löschen, ohne zuvor alle Bestellungen zu löschen, die sich auf einen bestimmten Kunden beziehen. Die Beschädigung wirkt sich auf Datenbankdateien auf niedriger Ebene aus und tötet Datensätze direkt. Eine schöne Überraschung für den Server, ungelöste Links zu Master-Datensätzen von Fremdschlüsseldatensätzen zu sehen.
Wenn FirstAID eine Extraktion durchführt, exportiert es nur verfügbare Datensätze und überspringt beschädigte Datensätze, sodass in der exportierten Datenbank dieses Problem mit Fremdschlüsseln auftreten kann.
Es gibt mehrere Optionen, wie man mit diesem Problem umgehen kann.
-
Inkonsistente Datensätze löschen
-
Die Fremdschlüssel-Constraint deaktivieren und optional Ersatzindizes für deaktivierte Fremdschlüssel erstellen
Die erste Option besteht darin, Datensätze mit inkonsistenten Datensätzen einfach aus der exportierten Datenbank zu löschen. Sie können dies in FirstAID tun – für alle Tabellen wählen Sie einfach «Delete inconsistent items», oder klicken Sie mit der rechten Maustaste auf die Tabelle und wählen Sie «Delete inconsistent items for FOREIGNKEY_NAME»

Die zweite Option besteht darin, die entsprechende Fremdschlüssel-Constraint zu deaktivieren, sodass es möglich ist, später ein normales Backup/Restore durchzuführen. Dazu müssen Sie «Deactivate FOREIGNKEY_NAME» im Rechtsklickmenü auswählen.
Der deaktivierte Fremdschlüssel kann jedoch eine wichtige Rolle in den Abfrageplänen spielen, daher ist es notwendig, Ersatzindizes für deaktivierte FK zu erstellen – dafür wählen Sie «Emulate FKNAME by index on table TABLENAME».
Praktisch gibt es häufiger eine Situation, in der es einfacher ist, Datensätze zu löschen, die gegen die Fremdschlüssel-Constraints verstoßen: Dazu klicken Sie auf «Delete inconsistent items», um Datensätze in allen Tabellen zu löschen, oder wählen Sie Tabellen eine nach der anderen aus und wählen Sie im Rechtsklickmenü «Delete inconsistent items…».
Nach dem Löschen inkonsistenter Datensätze klicken Sie auf «Count inconsistent items», um die aktuelle Situation mit Fremdschlüsselfehlern zu sehen. Es gibt Optionen «Deactivate all» und «Activate all», die alle Fremdschlüssel in der Datenbank aktivieren oder deaktivieren.
Bitte beachten Sie, dass der Index einen dritten Zustand haben kann – non-active, der sich von active und inactive unterscheidet. Nicht aktive Indizes treten auf, wenn der Wiederherstellungsprozess abnormal stoppt. FirstAID erkennt solche Indizes und zeigt sie in der Liste an, sodass es möglich ist, sie zu aktivieren.
6.5. Registerkarten Checks, Nulls, Unique Indices, User Indices
Ähnlich wie die Registerkarte Domains.
7. Behebung von Nbackup Merge-Problemen
Seit Version 2.0 hat Firebird den Mechanismus für inkrementelle Backups (nbackup), aber erst in Version 2.5.2 wurde er gut genug für den Produktionseinsatz. Seitdem hat seine Popularität zugenommen, und wir haben begonnen, mehr Wiederherstellungsanfragen dafür zu erhalten, und seit Version 6.0 wurde die Funktionalität zur Behebung von nbackup in FirstAID aufgenommen.
Es gibt 2 Hauptprobleme mit beschädigten inkrementellen Backups (normalerweise passiert dies aufgrund von abnormalem Herunterfahren während des Merge-Vorgangs):
-
Delta-Datei lässt sich nicht mit dem nbackup –n Befehl in die Hauptdatenbank einfügen. Wenn die Delta-Datei nicht zusammengeführt werden kann, ist es nicht möglich, die Datenbank zu verwenden, und im Falle einer Beschädigung ist es nicht möglich, FirstAID zur Reparatur der Datenbank zu verwenden.
-
Delta-Datei wurde mit der Hauptdatenbankdatei zusammengeführt, enthält aber immer noch den Link zum Delta, und die Datenbank funktioniert nicht mit verschiedenen Fehlern.
Um diese Probleme zu beheben, hat FirstAID 2 Funktionen: «Merge delta file» und «Fix up database header».
7.1. Merge delta file
Wenn Sie eine beschädigte Firebird-Datenbank mit Delta-Datei haben, die nicht mit dem Standardbefehl (nbackup –n database…) zusammengeführt werden kann, verwenden Sie diese Funktion, um eine erzwungene Zusammenführung der Datenbank durchzuführen.
Wichtig! Erstellen Sie die Backup-Kopie der Hauptdatenbankdatei und der Delta-Datei vor der erzwungenen Zusammenführung!
Um diese Funktion zu verwenden, öffnen Sie zuerst die beschädigte Datenbank wie gewohnt: File → "Open corrupted database". Wählen Sie dann im Hauptmenü "Nbackup merge"→"Merge delta" file und wählen Sie die Delta-Datei für diese Datenbank.

Bitte seien Sie vorsichtig– wenn Sie die Delta-Datei aus einer anderen Datenbank auswählen, wird die erzwungene Zusammenführung die Hauptdatenbankdatei ruinieren!
Deshalb bitten wir, immer eine Backup-Kopie der Hauptdatenbankdatei vor der erzwungenen Zusammenführung zu erstellen! Der Zusammenführungsprozess wird mit der Fortschrittsleiste und Aufzeichnungen im Log visualisiert:
[466] 19:57:45.411 Export Info> === 0 === [467] 19:57:45.411 Export Info>deltaPos = 1 iP = 1 actNum0 targ0 [468] 19:57:45.421 Export Info>deltaPos = 2 iP = 2 actNum3305 targ3305 [469] 19:57:45.426 Export Info>deltaPos = 3 iP = 3 actNum155 targ155 [470] 19:57:45.435 Export Info>deltaPos = 4 iP = 4 actNum14 targ14 [471] 19:57:45.444 Export Info>deltaPos = 5 iP = 5 actNum151 targ151 [472] 19:57:45.453 Export Info>deltaPos = 6 iP = 6 actNum275 targ275 [473] 19:57:45.462 Export Info>deltaPos = 7 iP = 7 actNum16 targ16
Am Ende des Prozesses (die Zeit hängt von der Delta-Größe ab) wird die folgende Meldung angezeigt:

Das bedeutet, dass Datenseiten vom Delta in die Hauptdatenbankdatei kopiert wurden. Danach müssen Sie die Datenbankdatei reparieren, um die Backup-Sperre aus der Datenbank zu entfernen.
Der beste Weg, dies zu tun, ist den Standard-nbackup-Befehl auszuführen:
nbackup -fixup database_name -user SYSDBA -pass yourpass
Dieser Befehl kann jedoch nicht erfolgreich sein und verschiedene Fehler geben.
In diesem Fall wählen Sie Nbackup merge→ Fix up database header
Versuchen Sie danach, ein gbak -b Backup aus dem Abschnitt "Endschritte nach DirectFix" durchzuführen — wenn es in Ordnung ist, ist die Datenbank in Ordnung, Sie können restore durchführen, um 100% sicher zu sein. Wenn gbak -b fehlschlägt, fahren Sie mit der DirectFix-Wiederherstellung fort und führen Sie dann Backup/Restore durch, oder mit Extraktion. |
7.2. Fix up database header
Wenn Sie die beschädigte Datenbank nicht mit dem Standard-nbackup-Befehl (nbackup -f databasename…) reparieren können, verwenden Sie diese Funktion, um die Backup-Sperre aus der Header-Seite zu entfernen.
Bitte seien Sie vorsichtig! Haben Sie immer eine Kopie der Datenbank vor dem Fixup mit FirstAID!
Um anzuwenden, öffnen Sie die beschädigte Datenbank mit der Backup-Sperre in FirstAID und wählen Sie "Nbackup merge"→ "Fix up header".
Als Ergebnis erscheint die folgende Meldung:

Versuchen Sie danach, ein gbak -b Backup aus dem Abschnitt "Endschritte nach DirectFix" durchzuführen — wenn es in Ordnung ist, ist die Datenbank in Ordnung, Sie können restore durchführen, um 100% sicher zu sein. Wenn gbak -b fehlschlägt, fahren Sie mit der DirectFix-Wiederherstellung fort und führen Sie dann Backup/Restore durch, oder mit Extraktion. |
8. Wichtige Informationen für den Wiederherstellungsprozess
8.1. "Quote names" Einstellung
Auf der Registerkarte "Database" von FirstAID sehen Sie die Checkbox "Quote Names". Diese Checkbox bestimmt, ob FirstAID Tabellen- und Metadatennamen während des Exports in Anführungszeichen setzen soll, d.h. ob die Datenbank in Dialekt 1 oder in Dialekt 3 ist.
Normalerweise wird es automatisch ON/OFF gesetzt, unter Verwendung von Informationen von der Header-Seite der beschädigten Datenbank (nicht von der Zieldatenbank!).
Wenn die Header-Seite beschädigt ist oder wenn Sie versuchen, Daten in die Datenbank mit einem anderen Dialekt zu exportieren, müssen Sie möglicherweise "Quote names" aktivieren oder deaktivieren.
Ein guter Hinweis darauf, dass Sie die Einstellung "Quote Names" ändern müssen, sind 0 Tabellen als Ergebnis des Befehls "Export Structure"

8.2. Offline-Registrierung
Wenn Sie FirstAID auf einem Computer ohne Internetzugang ausführen, müssen Sie die "Offline-Registrierung" der Datenbank durchführen

Das bedeutet, dass es nicht möglich ist, eine Verbindung zum IBSurgeon Deploy Center (http://deploy.ib-aid.com) von diesem Computer aus herzustellen, daher müssen Sie die UIK-Datei über die Website oder E-Mail senden.
1) Geben Sie E-Mail und Passwort ein und klicken Sie auf "Offline registration", dann speichern Sie die UIK-Datei
2) Öffnen Sie https://deploy.ib-aid.com auf einem anderen Computer
3) Melden Sie sich dort mit dem Benutzernamen und Passwort an, die Sie von IBSurgeon erhalten haben
4) Wählen Sie "IBSurgeon FirstAID 8.x" und dann "Activation"
5) Laden Sie UIK dort hoch und laden Sie UNLK herunter
6) Laden Sie UNLK zur Offline-Registrierung hoch
Sie können UIK per E-Mail an [email protected] senden (es wird einige Zeit dauern, da solche Anfragen manuell bearbeitet werden) |
8.3. Export der einzelnen Tabelle
FirstAID ermöglicht den Export bestimmter Tabellen. Wählen Sie eine Tabelle aus, klicken Sie mit der rechten Maustaste und wählen Sie "Export current relation".

Die Schritte für den Export sind ähnlich wie beim Export aller Tabellen in die neu erstellte Datenbank
8.4. External Metadata
Wenn die Beschädigung die Systeminformationen so stark beeinträchtigt, dass FirstAID aufgrund fehlender Metadaten den Datenbankinhalt nicht sehen kann, können Sie Metadaten ausleihen von:
-
Einer guten Datenbank mit derselben Struktur (alte gute Kopie)
-
HQbird FBDataGuard Metadaten-Repository
Um externe Metadaten zu verwenden:
1) Öffnen Sie die beschädigte Datenbank
2) Wählen Sie "Extract/Export"/"Use External metadata"

3) Wählen Sie "Existing database" und wählen Sie Ihre gute Datenbankkopie
Die folgende Warnung erscheint:

Klicken Sie auf "Ok".

Wenn Sie Metadaten aus der Live-Datenbank (alte gute Kopie) erhalten müssen, klicken Sie auf "Existing database":

Der Firebird-Server muss laufen, wenn FirstAID Metadaten aus der guten Datenbank extrahiert! |
Danach extrahiert FirstAID Metadaten aus der guten Datenbank und lädt die beschädigte Datenbank neu, um neue Metadaten anzuwenden. Hoffentlich werden Sie in der Lage sein, Daten zur Wiederherstellung zu sehen.
Wenn ja, fahren Sie mit dem Export der Daten fort (siehe Abschnitt "Wiederherstellung durch Extraktion" oben.)
9. Support
Bei Fragen kontaktieren Sie [email protected]