Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Defekte Datenbank (https://www.delphipraxis.net/106630-defekte-datenbank.html)

pronny31 14. Jan 2008 09:55

Datenbank: Firebird • Version: 2.0 • Zugriff über: Delphi 5

Defekte Datenbank
 
Gibt es eine Möglichkeit defekte Datenbank wieder herzustellen ?
Kommt ständig Konsistenz-Fehler .....
Vereinzelt komme ich an Datensätze ran !

mquadrat 14. Jan 2008 10:00

Re: Defekte Datenbank
 
Entweder über gfix (liegt im BIN Verzeichnis der Firebird-Installation) oder IB-Aid. Bei leichten Schäden könnte auch ein Backup / Restore helfen.

hoika 14. Jan 2008 10:19

Re: Defekte Datenbank
 
Hallo,

http://www.ibphoenix.com/main.nfs?a=...ge=ibp_db_corr


Heiko
PS: Ich würde aber nat. auch rausfinden, wieso die DB kaputt ist.

pronny31 14. Jan 2008 11:51

Re: Defekte Datenbank
 
Das Problem ist durch Memo-Felder entstanden !
Ich habe jetzt versucht einfach alle Datensätze in eine identische Tabelle zu kopieren !
Habe einfacg gesagt beginne bei 0 und geh alle Datensätze durch und versuche sie zu kopieren !(mit try except .....)
Nur kommt trotzdem der Fehler (gds software consi.......................) .
Gibt es ein Statement womit man herausfindet ob ein Datensatz defekt ist ?
Von 200000 Datensätzen gehe 180000 und der Rest ist fehlerhaft ...
Kennt jemand den Hintergrund ?
Ich geh mal davon aus es gibt dazu irgenwelche einträge in den Systemtabellen wobei diese sich ja auf die Felder beziehen ....

mkinzler 14. Jan 2008 11:54

Re: Defekte Datenbank
 
Geht der Export als Metadaten (inkl. Daten)?

pronny31 14. Jan 2008 12:02

Re: Defekte Datenbank
 
Habs probiert : Fehlermeldung !

Error Message:
----------------------------------------
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
internal gds software consistency check (can't continue after bugcheck).

hoika 14. Jan 2008 12:16

Re: Defekte Datenbank
 
Hallo,

so einfach ist das nicht.
Die DB ist in (xkB)-Seiten aufgeteilt.
Jede Tabelle belegt mehrere (naja, viele) dieser Seiten,
für Daten, Indezes, Blobs.
Das ganze ist wild durcheinander, obwohl FB versucht,
gleichartige Daten hintereinander zu speichern.


Im Seiten-Header steht u.a. drin, was konkret auf der Seite gespeichert ist
(Metadaten,Date,Index,Blob).
Gibt es Schreibfehler (z.B. Rechnerabsturz), wird viell. ein Index-wert auf eine
falsche Seite geschrieben.
FB kann bis zu einem bestimmten Grad erkennen, das die Daten auf einer Seite
falsch geschrieben sind (consistency check).

Da hilft kein "ich kopier mal ein bissel, mal sehen, wie viel Records ich bekomme",
bei Paradoy klappt sowas vielleicht noch, bei FB nicht mehr.

Geh mal genauso vor, wie bei meinem Link beschrieben.

Das geht los mit "FB anhalten, Datei von Hand (Explorer)" kopieren.


Heiko

pronny31 14. Jan 2008 12:34

Re: Defekte Datenbank
 
Des bringt auch nichts habe es probiert !

hoika 14. Jan 2008 13:05

Re: Defekte Datenbank
 
Hallo,

den Link komplett ausprobiert ?
Wo genau kommt denn bei der dortigen Vorgehensweise immer noch der Fehler.
Hast du verstanden, dass nach gfix immer Backup/Restore gemacht werdne muss ?


Falls es gar nicht mehr geht:

1. Versuch, die Daten mit IBExpert und Eingrenzung der Primär-Schlüssel
zu extrahieren
select * from project where (projectid>=0) and (projectid<=10000)
2. leere DB erzeugen und per IBDataPump füllen
klappt aber auch nicht immer
3. IB-FirstAid ist viell. letzte Rettung.


Heiko

pronny31 14. Jan 2008 13:49

Re: Defekte Datenbank
 
Gibt es eine Möglichkeit diese Exception abzufangen ?

hoika 14. Jan 2008 14:40

Re: Defekte Datenbank
 
Hallo,

ich glaube nicht, wenn try except nicht geht, ist Schluss

;( sobald die DB an dieser Stelle ist,
ist wohlSense.

Du kannst nur probieren, herauszufinden,
welche Datensätze genau betroffen sind.

Das geht über ein select * from tab order by prim_key

Dann im Programm laufen lassen,
und bei der Exception die aktuelle Id (prim_key) anzeigen lassen,

Ev. hilft auch, alle Datensätze per Schleife und select * from tab where prim_key=:schleife_i
mal zu prüfen, vielleicht die erfolgreichen Id's in eine Textdatei.
Dann die Ids auslesen und in eine leere DB packen.

Ist ein rumfummeln ohne Ende.

Bei IBExpert kann man per "Extracte MetaData" auch Datensätze exportieren
und dort Bereiche angeben.


Wo ist denn das Backup der DB ?


Heiko

pronny31 15. Jan 2008 12:32

Re: Defekte Datenbank
 
Was passiert eigentlich intern in der Datenbank, solche Datensätze kaputt gehen ?
Weiss das jemand genau ? Würde mich mal interessieren ....


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 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