Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird: Datenbank defekt - Wie reparieren? (https://www.delphipraxis.net/125991-firebird-datenbank-defekt-wie-reparieren.html)

Nersgatt 16. Dez 2008 08:26

Datenbank: Firebird • Version: 2.0 • Zugriff über: Gbak/Gfix

Firebird: Datenbank defekt - Wie reparieren?
 
Hallo,

ich habe hier eine defekte Datenbank eines Kunden, von der ich mit GBAK kein Backup mehr machen kann.
Ich habe versucht, mit GFix es zu beheben:
Code:
C:\JT\Testdaten>gfix -mend -full -ignore datenbank.gdb
Summary of validation errors
        Number of index page errors    : 6
Danach mit Gbak ein Backup machen:
Code:
C:\JT\Testdaten>gbak -backup -v -ignore Datebank.gdb Datenbank.bak
Das resultiert leider immer wieder in
Code:
gbak: ERROR:message length error (encountered 2204, expected 2180)
gbak: ERROR: gds_$receive failed
gbak:Exiting before completion due to errors
Kann mir jemand sagen, wie ich weiter vorgehen kann, um diese Datenbank wieder gerade zu biegen?

Danke!
Jens

mkinzler 16. Dez 2008 08:34

Re: Firebird: Datenbank defekt - Wie reparieren?
 
Wenn man noch auf die Datenbank zugreifen kann könnte man versuchen diese in ein SQL-Skript auzulagern.
Sonst bleiben nur Tools wie IBSurgeon o.ä.

mjustin 16. Dez 2008 08:42

Re: Firebird: Datenbank defekt - Wie reparieren?
 
Zitat:

Zitat von Nersgatt
Hallo,

ich habe hier eine defekte Datenbank eines Kunden, von der ich mit GBAK kein Backup mehr machen kann.
Ich habe versucht, mit GFix es zu beheben:
Code:
C:\JT\Testdaten>gfix -mend -full -ignore datenbank.gdb
Summary of validation errors
        Number of index page errors    : 6
Danach mit Gbak ein Backup machen:
Code:
C:\JT\Testdaten>gbak -backup -v -ignore Datebank.gdb Datenbank.bak
Das resultiert leider immer wieder in
Code:
gbak: ERROR:message length error (encountered 2204, expected 2180)
gbak: ERROR: gds_$receive failed
gbak:Exiting before completion due to errors
Kann mir jemand sagen, wie ich weiter vorgehen kann, um diese Datenbank wieder gerade zu biegen?

Danke!
Jens

Man könnte die Datenbank neu (leer) anlegen (wenn man die Metadaten noch hat oder wiederherstellen kann).
Anschliessend werden dann alle Tabellen der defekten DB als SQL INSERT Skripte exportiert, und diese dann auf der neuen DB ausgeführt. Dazu kann man z.B. IBExpert verwenden.

Alternativ gibt es Tools und Services wie IBSuergeon, aber mit denen habe ich keine Erfahrung:


http://www.ibsurgeon.com/

Nersgatt 16. Dez 2008 09:01

Re: Firebird: Datenbank defekt - Wie reparieren?
 
Zitat:

Zitat von mkinzler
Wenn man noch auf die Datenbank zugreifen kann könnte man versuchen diese in ein SQL-Skript auzulagern.

Das wäre eine Möglichkeit, auf die Datenbank kann ich noch zugreifen. Das Problem dabei ist, dass ich ja die Reihenfolge der Tabelle beachten muss, damit die Referetielle Integrität nicht verletzt wird.
Gibt es einen Mechanismus, um das vielleicht temporär ausser Kraft zu setzen, damit ich die Daten einfach ohne Rücksicht auf Verluste in die neue Datenbank pumpen kann?

Gruß,
Jens

mjustin 16. Dez 2008 09:08

Re: Firebird: Datenbank defekt - Wie reparieren?
 
Zitat:

Zitat von Nersgatt
Zitat:

Zitat von mkinzler
Wenn man noch auf die Datenbank zugreifen kann könnte man versuchen diese in ein SQL-Skript auzulagern.

Das wäre eine Möglichkeit, auf die Datenbank kann ich noch zugreifen. Das Problem dabei ist, dass ich ja die Reihenfolge der Tabelle beachten muss, damit die Referetielle Integrität nicht verletzt wird.
Gibt es einen Mechanismus, um das vielleicht temporär ausser Kraft zu setzen, damit ich die Daten einfach ohne Rücksicht auf Verluste in die neue Datenbank pumpen kann?

Gruß,
Jens

* Foreign Keys (Fremdschlüssel) kann man nicht deaktivieren, nur löschen
* Trigger, die eventuell auch FK-Prüfungen machen, kann man deaktivieren
* Indexdateien kann man, damit der Daten-Import schneller geht, auch deaktivieren

Wenn man das Datenmodell gut kennt, sollte man die richtige Importreihenfolge aber leicht herausfinden können.

IBExpert würde ich mir auf jeden Fall mal anschauen, da sind so viele Werkzeuge enthalten, zum Beispiel falls auch BLOBs oder Unicodeinhalte extrahiert werden müssen, und einige Serviceprogramme die optional installierbar sind...

mkinzler 16. Dez 2008 09:34

Re: Firebird: Datenbank defekt - Wie reparieren?
 
Wenn man den Export aus IBExpert heraus macht, wird die Reihenfolge der Tabellen so gewählt, das Abhängigkeiten rekonstruiert werden.

Nersgatt 16. Dez 2008 10:08

Re: Firebird: Datenbank defekt - Wie reparieren?
 
Zitat:

Zitat von mkinzler
Wenn man den Export aus IBExpert heraus macht, wird die Reihenfolge der Tabellen so gewählt, das Abhängigkeiten rekonstruiert werden.

Ich muss blind sein, ich finde die Funktion einfach nicht. Wenn ich in einer Tabelle bin, kann ich "Tabelle -> Exportiere Daten in Skript" wählen. Dabei wird ja aber nur eine Tabelle exportiert. Wo kann ich denn alle Tabellen exportieren?

[Edit] Hat sich erledigt: Nützliches -> Extrahiere Metadaten

Danke,
Jens

Nersgatt 16. Dez 2008 10:43

Re: Firebird: Datenbank defekt - Wie reparieren?
 
Nur um es zu Abschluss zu bringen. Mit dem Export in ein Script (mit IBExpert) und damit eine neue DB erstellen -> Datenbank funktioniert wieder.

Zitat:

Zitat von mkinzler
Wenn man den Export aus IBExpert heraus macht, wird die Reihenfolge der Tabellen so gewählt, das Abhängigkeiten rekonstruiert werden.

IBExpert exportiert erst die Tabellenbeschreibungen, dann die Daten als INSERT-Statements und erst am Ende des Scriptes werden die Schlüssel, Trigger und Prozeduren erstellen.
So umgeht man das Problem der Reihenfolge.

Gruß,
Jens

DeddyH 16. Dez 2008 10:45

Re: Firebird: Datenbank defekt - Wie reparieren?
 
Jepp, Holger ist ja nicht blöd :zwinker:

Roland1967 16. Dez 2008 12:02

Re: Firebird: Datenbank defekt - Wie reparieren?
 
Würde auch IBExpert empfehlen dafür. Ich kann mich an ein Video von einem Seminar von Holger Klemt erinnern (müsste 2007 gewesen sein), wo Datenbankreparaturen vorgeführt wurden. Die Videos waren unter z.B. Google-Video veröffentlich. http://video.google.de/videoplay?doc...vBQ&q=ibexpert

Von einem Seminar im Herst 2008 in Leipzig gibt es auf der IBExpert-Seite ein von der Qualität besseres Video, da ich aber noch nicht alles geschafft habe, weiß ich nicht ob dort zu Datenbankrepearaturen was gesagt wurde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:16 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz