Nach einem Hardware- oder Datenbankfehler stellen Sie die Daten in der betreffenden Datenbankinstanz wieder her, indem Sie die Daten- und gegebenenfalls Log-Sicherungen dieser Datenbankinstanz wieder einlesen.
Sie zeigen zunächst die Sicherungshistorie an und
ermitteln, welches die neueste vollständige Datensicherung ist (Siehe: backup_history_open,
backup_history_list)
und welche inkrementellen Datensicherungen noch danach angefertigt wurden.
Werten Sie dazu die Angaben in den Zeilen der Sicherungen aus, aus denen
hervorgeht, wann und von welcher bis zu welcher Seite die jeweilige Sicherung
angefertigt wurde. Die neuesten Einträge stehen am Ende der Datei.
Als Nächstes lesen Sie die vollständige und danach die
inkrementellen Datensicherungen ein (Siehe: recover_start).
Nach jeder eingelesenen Datensicherung erhalten Sie angezeigt, welche Seite
nach dieser Datensicherung als nächste einzulesen ist.
Nach dem Einlesen der Datensicherungen zeigen Sie die
Restart-Information an und ermitteln, ob die Datenbankinstanz restartfähig ist
und ab welcher Seite die Log-Einträge im Log-Bereich noch vorhanden sind
(Siehe db_restartinfo).
Wenn sich die nach einer Datensicherung als nächste
einzulesende Seite noch im Log-Bereich der Datenbankinstanz befindet, müssen
Sie nun nur noch die Datenbankinstanz neu starten (Siehe: db_restart). Das
System liest die Log-Einträge aus dem Log-Bereich und stellt so den letzten
konsistenten Datenbankzustand wieder her. Wenn Sie die Datenbankinstanz nicht
vollständig bis zum letzten konsistenten Zustand sondern nur bis zu einem
bestimmten früheren Zeitpunkt wiederherstellen wollen, geben Sie diesen
Zeitpunkt als Option beim Restart an.
Wenn die nach einer Datensicherung einzulesende Seite
kleiner ist, als die kleinste Seitennummer im Log-Bereich, dann ermitteln Sie
in der Sicherungshistorie, in welcher Sicherung diese Seite enthalten ist.
Lesen Sie die entsprechende Daten- oder Log-Sicherung und fortlaufend
chronologisch alle nachfolgend erstellten Sicherungen bis einschließlich jener
ein, die mindestens den Vorgänger der kleinsten Seitennummer im Log-Bereich
enthält (Siehe: recover_replace).
Sobald diese Seite eingelesen wurde, beendet das System das Einlesen der
Sicherung und startet die Datenbankinstanz unter Verwendung der noch im
Log-Bereich stehenden Einträge (Restart).
Siehe auch:
Einlesen der Log-Sicherungen bis zu einem bestimmten Zeitpunkt
Sie lesen die erste Sicherung mit Hilfe des DBM-Kommandos recover_start ein. Alle folgenden Sicherungen lesen Sie mit dem DBM-Kommando recover_replace ein.
Falls Sie aus irgendeinem Grunde das Einlesen der Sicherungen unterbrechen oder Ihnen bei der Angabe des Folgekommandos ein Fehler unterlaufen sollte, überführt das System die Datenbankinstanz sofort in den Betriebszustand OFFLINE.
Sie müssen dann die Datenbankinstanz erneut in den Betriebszustand ADMIN überführen und die Datenbanksitzung wieder eröffnen. Anschließend führen Sie erneut db_restartinfo aus, um sich davon zu überzeugen, welche der eingelesenen Seiten bereits persistent im Datenbereich abgelegt wurden und welche gegebenenfalls noch einmal eingelesen werden müssen. Fahren Sie in diesem Fall mit dem Einlesen der Sicherungen fort, indem Sie erneut mit recover_start die gemäß Restart-Information vom System erwartete erste Seite und mit recover_replace alle folgenden Sicherungen einlesen.
Zu den Voraussetzungen siehe Database Manager CLI, recover_start,
recover_replace
Siehe auch:
Restart-Information und Sicherungshistorie für das Einlesen von Sicherungen auswerten
Konzepte des
Datenbanksystems, Sichern und
Wiederherstellen,
Datenbankinstanz
wiederherstellen
Glossar, Sicherungshistorie
Sie wollen die Datenbankinstanz nach einem Hardwarefehler im Datenbereich wiederherstellen.
Für die Simulation dieses Beispiels, muss die
Datenbankinstanz über mindestens 2 Data-Volumes verfügen. Sie können alle
vorhandenen Volumes mit dem DBM-Kommando param_getvolsall
anzeigen. Legen Sie gegebenenfalls ein weiteres Data-Volume mit dem Namen
DISKD0002 unter dem Pfad c:\documents and settings\all users\application
data\sdb\data\demodb\data an (Siehe: Vergrößern einer
Datenbankinstanz, Abschnitt Szenario 3).
Überführen Sie nun DEMODB in den Betriebszustand ADMIN. Simulieren Sie einen Hardwarefehler, indem Sie mittels Betriebssystemkommando das Data-Volume DISKD0002 löschen.
Die Datenbankinstanz befindet sich weiterhin im Betriebszustand ADMIN, alle vorher im Datenbereich vorhandenen Daten sind jedoch verloren. Die Datenbankinstanz muss wiederhergestellt werden.
Im folgenden Beispiel sind die relevanten Werte der Ausgabe fett formatiert, die Interpretation dieser Werte ist als Kommentar gekennzeichnet (#).
Zeigen Sie zunächst die notwendigen Informationen über die vorhandenen Sicherungen an und werten Sie diese aus.
1. Aufrufen des Database Manager CLI im Sitzungsmodus, Anmelden als BenutzerOLEG mit dem Kennwort MONDAY, Herstellen der Verbindung zur Datenbankinstanz DEMODB:
>dbmcli -u OLEG,MONDAY -d DEMODB
dbmcli on DEMODB>
2. Holen der Sicherungshistorie:
dbmcli on demodb>backup_history_open
OK
3. Anzeigen der Sicherungshistorie :
dbmcli on demodb>backup_history_list
OK
END
…
# Die neuste vollständige Datensicherung ist jene mit dem Label DAT_000000002. Diese muss zuerst eingelesen werden.
# Die nächste Seite muss 9531 sein:
| |
43C7BBD1000B|DAT_000000002|SAVE WARM|2006-01-13 15:40:17|2006-01-13 15:40:17|200
6-01-13 15:40:17|2006-01-13 15:40:17| 9531| |NO |DemoDataCompl
| 384| 1| 0
# Die Seite 9531 ist in dieser Log-Sicherung mit dem Label LOG_000000007 enthalten, damit ist diese unmittelbar nach der vollständigen Datensicherung einzulesen.
# Dabei werden die Seiten 9531 -11828 eingelesen, nächste einzulesende Seite ist die 11829:
| |
43C7BBE5000C|LOG_000000007|SAVE WARM|2006-01-13 15:40:23|2006-01-13 15:40:37|200
6-01-13 15:40:37|2006-01-13 15:40:38| 9531| 11828| |DemoFileLog
| 2096| 1| 0
# Die Seite 11829 ist in dieser Log-Sicherung mit dem Label LOG_000000008enthalten, damit ist diese unmittelbar nach der Log-Sicherung mit dem Label LOG_000000007 einzulesen.
# Dabei werden die Seiten 11829 - 14182 eingelesen, nächste einzulesende Seite ist die 14183:
| |
43C7BC01000D|LOG_000000008|SAVE WARM|2006-01-13 15:40:42|2006-01-13 15:40:46|200
6-01-13 15:41:05|2006-01-13 15:41:06| 11829| 14182| |DemoFileLog
| 2152| 1| 0
# Die Seite 14183 ist in dieser Log-Sicherung mit dem Label LOG_000000009enthalten, damit ist diese unmittelbar nach der Log-Sicherung mit dem Label LOG_000000008 einzulesen.
# Dabei werden die Seiten 14183 – 14358 eingelesen, nächste einzulesende Seite ist die 14359:
| |
43C7BC01000D|LOG_000000009|SAVE WARM|2006-01-13 15:40:46|2006-01-13 15:41:05|200
6-01-13 15:41:06|2006-01-13 15:41:07| 14183| 14358| |DemoFileLog
| 176| 1| 0
# Die Seite 14359 ist in dieser Log-Sicherung mit dem Label LOG_000000010enthalten, damit ist diese unmittelbar nach der Log-Sicherung mit dem Label LOG_000000009 einzulesen.
# Dabei werden die Seiten 14359 - 16712 eingelesen, nächste einzulesende Seite ist die 16713.
| |
43C7BC24000E|LOG_000000010|SAVE WARM|2006-01-13 15:41:17|2006-01-13 15:41:21|200
6-01-13 15:41:40|2006-01-13 15:41:42| 14359| 16712| |DemoFileLog
| 2152| 1| 0
# Nachfolgend müssen chronologisch alle Log-Sicherungen einschließlich der mit dem Label LOG_000000013 eingelesen werden.
| |
43C7BC24000E|LOG_000000011|SAVE WARM|2006-01-13 15:41:21|2006-01-13 15:41:25|200
6-01-13 15:41:42|2006-01-13 15:41:43| 16713| 19065| |DemoFileLog
| 2152| 1| 0
| |
43C7BC24000E|LOG_000000012|SAVE WARM|2006-01-13 15:41:25|2006-01-13 15:41:40|200
6-01-13 15:41:43|2006-01-13 15:41:43| 19066| 19770| |DemoFileLog
| 656| 1| 0
# Die Log-Sicherung mit dem Label LOG_000000013 enthält die Seiten 19771 bis 22124 und damit den Vorgänger der in der Restart-Information ausgewiesen ersten Seite im Log-Bereich (21452).
# Das System wird beim Wiederherstellen diese Log-Sicherung vollständig einlesen. Die nachfolgenden Log-Sicherungen brauchen nicht mehr eingelesen zu werden, da die darin enthaltenen Seiten noch im Log-Bereich stehen und vom System aus dem Log-Bereich wiederhergestellt werden können.
| |
43C7C497000F|LOG_000000013|SAVE WARM|2006-01-13 16:17:14|2006-01-13 16:17:17|200
6-01-13 16:17:43|2006-01-13 16:17:45| 19771| 22124| |DemoFileLog
| 2152| 1| 0
| |
43C7C497000F|LOG_000000014|SAVE WARM|2006-01-13 16:17:17|2006-01-13 16:17:22|200
6-01-13 16:17:45|2006-01-13 16:17:46| 22125| 24478| |DemoFileLog
| 2152| 1| 0
| |
43C7C497000F|LOG_000000015|SAVE WARM|2006-01-13 16:17:22|2006-01-13 16:17:43|200
6-01-13 16:17:46|2006-01-13 16:17:48| 24479| 26748| |DemoFileLog
| 2080| 1| 0
| |
43C7C5240010|LOG_000000016|SAVE WARM|2006-01-13 16:17:45|2006-01-13 16:20:04|200
6-01-13 16:20:04|2006-01-13 16:20:05| 26749| 28510| |DemoFileLog
| 1616| 1| 0
| |
Sie verfügen nun über die Informationen zu den Sicherungen und können DEMODB wiederherstellen.
...
1. Überführen der Datenbankinstanz in den Betriebszustand ADMIN:
dbmcli on demodb>db_admin
OK
2. Aufbau einer Datenbanksitzung:
dbmcli on demodb>db_connect
OK
3. Einlesen der letzten vollständigen Datensicherung:
dbmcli on demodb>recover_start DemoDataCompl
OK
Returncode 0
Date 20060117
Time 00114627
Server GENUA
Database DEMODB
Kernel Version Kernel 7.6.00 Build 016-123-109-428
Pages Transferred 384
Pages Left 0
Volumes 1
Medianame DemoDataCompl
Location Backups 2005\data\completeDataJan
Errortext
Label DAT_000000002
Is Consistent true
First LOG Page 9531
# Nach der vollständigen Datensicherung erwartet das System die Log-Seite mit der Nummer 9531.
Last LOG Page
DB Stamp 1 Date 20060113
DB Stamp 1 Time 00154017
DB Stamp 2 Date
DB Stamp 2 Time
Page Count 362
Devices Used 1
Database ID GENUA:DEMODB_20060113_153806
Max Used Data Page 0
4. Anzeigen der Restart-Information:
dbmcli on demodb>db_restartinfo
OK
Used LOG Page 28513
First LOG Page 21452
# Der Log-Bereich enthält noch alle Seiten der Nummern 21452 bis 28513. Für einen Restart der Datenbankinstanz müssen somit noch die Seiten 9531 bis 21451 aus Sicherungen eingelesen werden.
Restartable 1
# Die Datenbankinstanz ist restartfähig, d.h. der Log-Bereich ist unbeschädigt.
Id Restart Record GENUA:DEMODB_20060113_153806
Id LOG Info GENUA:DEMODB_20060113_153806
Consistent 1
5. Einlesen der Log-Sicherungen
a. Einlesen der Log-Sicherung mit dem Label LOG_000000007:
dbmcli on demodb>recover_start DemoFileLog LOG 007
OK
Returncode -8020
# Der Rückgabewert -8020 weist aus, dass die chronologisch nächste Sicherung mit Hilfe des Folgekommandos recover_replace eingelesen werden muss.
Date 20060117
Time 00143406
Server GENUA
Database DEMODB
Kernel Version Kernel 7.6.00 Build 016-123-109-428
Pages Transferred 2096
Pages Left 0
Volumes 1
Medianame DemoFileLog
Location Backups 2005\data\logBackup.007
Errortext
Label LOG_000000007
Is Consistent
First LOG Page 9531
Last LOG Page 11828
DB Stamp 1 Date 20060113
DB Stamp 1 Time 00154023
DB Stamp 2 Date 20060113
DB Stamp 2 Time 00154037
Page Count 2297
Devices Used 1
Database ID GENUA:DEMODB_20060113_153806
Max Used Data Page
b. Einlesen der Log-Sicherung mit dem Label LOG_000000008 mit Hilfe des Folgekommandos recover_replace:
dbmcli on demodb>recover_replace DemoFileLog "C:\Documents and Settings\All Users\Application Data\sdb\data\wrk\DEMODB\Backups 2005\Data\logBackup" 008
OK
Returncode -8020
Date 20060117
Time 00143406
Server GENUA
Database DEMODB
Kernel Version Kernel 7.6.00 Build 016-123-109-428
Pages Transferred 2152
Pages Left 0
Volumes 1
Medianame DemoFileLog
Location C:\Documents and Settings\All Users\Application Data\sdb\data\wrk\DEMODB\Backups 2005\Data\logBackup.008
Errortext
Label LOG_000000008
Is Consistent
First LOG Page 11829
Last LOG Page 14182
DB Stamp 1 Date 20060113
DB Stamp 1 Time 00154042
DB Stamp 2 Date 20060113
DB Stamp 2 Time 00154046
Page Count 2353
Devices Used 1
Database ID GENUA:DEMODB_20060113_153806
Max Used Data Page
c. Einlesen der Log-Sicherung mit dem Label LOG_000000009 mit Hilfe des Folgekommandos recover_replace:
dbmcli on demodb>recover_replace DemoFileLog "C:\Documents and Settings\All Users\Application Data\sdb\data\wrk\DEMODB\Backups 2005\Data\logBackup" 009
OK
Returncode -8020
Date 20060117
Time 00143406
Server GENUA
Database DEMODB
Kernel Version Kernel 7.6.00 Build 016-123-109-428
Pages Transferred 176
Pages Left 0
Volumes 1
Medianame DemoFileLog
Location C:\Documents and Settings\All Users\Application Data\sdb\data\wrk\DEMODB\Backups 2005\Data\logBackup.009
Errortext
Label LOG_000000009
Is Consistent
First LOG Page 14183
Last LOG Page 14358
DB Stamp 1 Date 20060113
DB Stamp 1 Time 00154046
DB Stamp 2 Date 20060113
DB Stamp 2 Time 00154105
Page Count 175
Devices Used 1
Database ID GENUA:DEMODB_20060113_153806
Max Used Data Page
d. bis g: Einlesen der übrigen Log-Sicherungen mit den Labels LOG_000000010 - LOG_000000013 mit Hilfe des Folgekommandos recover_replace (siehe Abschnitte a – c).
# Wenn die letzte notwendige Log-Sicherung eingelesen ist und das Datenbanksystem damit über alle Seiten verfügt, deren Nummer kleiner als die erste Seite im Log-Bereich ist, dann liest es die übrigen Seiten selbsttätig aus dem Log-Bereich ein und überführt die Datenbankinstanz am Schluss in den Betriebszustand ONLINE.
Die Datenbankinstanz DEMODB wurde wiederhergestellt, das manuell gelöschte Data-Volume wurde entsprechend der Informationen in der Datenbankparameterdatei wiederhergestellt und befindet sich an der ursprünglichen Stelle auf Ihrer Festplatte.
Alle vor dem Hardwarefehler im Daten- und Log-Bereich vorhandenen Seiten sind wieder in der Datenbankinstanz und Sie können darauf zugreifen.
Die Datenbankinstanz ist betriebsbereit und befindet sich im Betriebszustand ONLINE.