AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird: Datenbank defekt - Wie reparieren?
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird: Datenbank defekt - Wie reparieren?

Ein Thema von Nersgatt · begonnen am 16. Dez 2008 · letzter Beitrag vom 4. Jul 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

Firebird: Datenbank defekt - Wie reparieren?

  Alt 16. Dez 2008, 09:26
Datenbank: Firebird • Version: 2.0 • Zugriff über: Gbak/Gfix
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
Jens
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Firebird: Datenbank defekt - Wie reparieren?

  Alt 16. Dez 2008, 09:34
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.ä.
Markus Kinzler
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Firebird: Datenbank defekt - Wie reparieren?

  Alt 16. Dez 2008, 09:42
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/
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: Firebird: Datenbank defekt - Wie reparieren?

  Alt 16. Dez 2008, 10:01
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
Jens
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Firebird: Datenbank defekt - Wie reparieren?

  Alt 16. Dez 2008, 10:08
Zitat von Nersgatt:
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...
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Firebird: Datenbank defekt - Wie reparieren?

  Alt 16. Dez 2008, 10:34
Wenn man den Export aus IBExpert heraus macht, wird die Reihenfolge der Tabellen so gewählt, das Abhängigkeiten rekonstruiert werden.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

Re: Firebird: Datenbank defekt - Wie reparieren?

  Alt 16. Dez 2008, 11:08
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
Jens
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

Re: Firebird: Datenbank defekt - Wie reparieren?

  Alt 16. Dez 2008, 11:43
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 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
Jens
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#9

Re: Firebird: Datenbank defekt - Wie reparieren?

  Alt 16. Dez 2008, 11:45
Jepp, Holger ist ja nicht blöd
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Roland1967

Registriert seit: 29. Jun 2006
19 Beiträge
 
Delphi XE6 Professional
 
#10

Re: Firebird: Datenbank defekt - Wie reparieren?

  Alt 16. Dez 2008, 13:02
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr.
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