Hilfe!! Wiederherstellung einer DB
- Dieses Thema hat 6 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 18 Jahre, 12 Monaten vonMitglied.
- AuthorPosts
- 7. Juni 2004 um 5:51 Uhr #2395
Hallo,
von einer Datenbank existiert keine aktuelle Sicherung. Vor einer Neuinstallation des DB2-Programms auf dem Server (Win2000) hat man vergessen, eine Sicherung zu machen. Die Verzeichnisstruktur der Datenbank mit den Daten wurde auch bei der Installation gelöscht.
Inzwischen wurden die Struktur und die Daten wieder gewonnen.Wie kann man aus der Baumstruktur und den Daten die Datenbank wiederherstellen?
Es ist sehr dringend!!
Vielen Dank im voraushufa
7. Juni 2004 um 7:52 Uhr #2878Hi Hufa,
verstehe ich richtig, daß die Tablespaces (SMS?) als Verzeichnisse und Dateien wiedergefunden wurden und verfügbar sind? Existiert auch noch die Laufwerksdirectory x:db2node0000sqldbdir?
Wenn ja, dann muß die Datenbank nur neu katalogisiert werden.
Vorgehensweise: Im CLP abfragen, ob DB noch aufzufinden:
list database directory on x:
Wenn vorhanden, dann katalogfisieren:
catalog database dbname on x:
Dann ist die DB wieder der Instanz bekannt und kann auf das neue DB2-release migriert werden.MfG
Axel Pürner
7. Juni 2004 um 12:31 Uhr #3235Hallo Axel,
vielen Dank für die Antwort. Leider waren meine Ausführungen nicht so ganz richtig.
Das Tool, mit dem man die gelöschten Dateien wieder gewinnen konnte, hat die Files (*.dat, *.inx) gefunden und zwar ohne Pfadangabe. So ist eine Zuordnung der Dateien ohne weiteres nicht möglich.
(Welche DAT-Datei gehört zu welcher Tabelle und damit zu welchem Tablespace, etc.)Gibt es eine Möglichkeit, aus einer DAT-Datei Informationen bezüglich der Tabelle (z.B. Tabellenname) zu lesen?
bin für jede Hilfe dankbar.
hufa
7. Juni 2004 um 15:15 Uhr #3468Hi hufa,
das sieht dann nicht gut aus: Die Verzeichnisse sind die SMS-Tablespaces, die .dat-Files die Tabellen, die.inx-Files die Indizes darin. Natürlich könnten die Tabellen im Dump-Format gelesen werden: 4k-Blöcke mit Header, die Zeilen und am Schluß die Slots. Es fehlen aber die Verwaltungsdaten der Datenbank mit der Konfiguration, die Log-Dateien, SQLTAG.NAM etc. Ich glaube nicht, daß man das mit vernünftigem Aufwand wieder aufbauen könnte. (Man müßte zuerst die Tabellen des Katalog wiederfinden (Syscatspace), daraus die DB-Struktur holen (Tabellen finden und "lesen") und die Struktur nachbauen – in der Hoffnung, das DB2 läßt sich diese so unterschieben. Theoretisch wär das machbar, aber mit welchem Aufwand und ohne Erfolgsgarantie!)
Wie alt ist denn die letzte Sicherung?
MfG
Axel Pürner
PS: Das DB2 löscht beim Deinstallieren und Neuinstallieren keine DBs
8. Juni 2004 um 7:38 Uhr #3615Hallo Axel,
wie gesagt, alle Dateien (*.dat, *.inx, *.nam ) -ohne Pfadangabe- sind da, auch die SYSTEM-Daten.
Gibt es einen Weg, die DAT-Files den entsprechenden Tabellen zuzuordnen?
Kann man aus den DAT-Files die Tabellen "dumpen"? Wie und mit welchem Tool ? Vielleicht kann man da an den Header und damit an mehr Infos ran kommen.
Gruss
hufa
9. Juni 2004 um 8:16 Uhr #3726Hi hufa,
dann sollten etliche Dateinamen doppelt sein, z.B. SQL00001.DAT oder.INX. Die Tablespaces sollten eigentlich SQLT0000.0, SQLT0001.0, SQLT0002.0 heissen (der erste ist SYSCATSPACE, der letzte USERSPACE1). Zu den Systemsdateien gehören aber auch SQLDBCON, SQLSPCS.1 (und .2), SQLBP.1 (und .2) etc.
Leider stehen in den Tabellen-Dateien nicht die Namen, sondern diese werden im Katalog in die IDs umgesetzt. Da der Katalog wohl immer gleich aufgebaut wird, hilft es vielleicht, eine neue Datenbank anzulegen und dort die FIDs der Katalog-Objekte zu finden. SYSTABLES hat die FID 28 (SQL00028.DAT).
Vielleicht ist es auch ein Weg, die identifizierten Katalog-Tabllen und -Indizes über die Dateien der neuen DB zu kopieren und alle anderen in die leere SQLT0002.0-Directory.
Das ist aber aller reine Bastelei ohne Efolgsgarantie und gilt nur für SMS-Tablespaces in der Standard-Konfiguration!MfG
Axel Pürner
9. Juni 2004 um 9:21 Uhr #3799Hi hufa,
ich habe mal eben etwas gebastelt: Ich habe eine neue Datenbank angelegt und dann
1) Katalog-Tabellen und -Indizes sowie Daten-Tabellen und -Indizes aus einer anderen DB in die neue kopiert. Ergebnis: DB2 verweigert jeden Zugriff!
2) eine Tabelle mit der Original-DDL angelegt, so daß die FIDs übereinstimmen, und dann die zugehörigen Dateien kopiert. Ergebnis: DB2 verweigert den Zugriff auf die Tabelle.
Ich hatte dies schon befürchtet, wollte es aber nochmal verifizieren: Es ist nicht so einfach, dem DB2 die alten Dateien zu unterschieben, ohne daß die vollständige Datenbankstruktur auf dem Datenträger rekonstruiert wird.
MfG
Axel Pürner
- AuthorPosts
You must be logged in to reply to this topic.