## Wiederherstellen der Datenbankinstanz

### Verwendung

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

### Szenario

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.

### Vorgehensweise

Im folgenden Beispiel sind die relevanten Werte der Ausgabe fett formatiert, die Interpretation dieser Werte ist als Kommentar gekennzeichnet (#).

#### Sicherungsinformationen anzeigen

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 Benutzer OLEG 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_000000008 enthalten, 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_000000009 enthalten, 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_000000010 enthalten, 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

| |

#### Daten und Log-Einträge wiederherstellen

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.

### Ergebnis

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.