## Wiederherstellungsfunktion (restore)

Mit Hilfe der Wiederherstellungsfunktion wird eine Anfrage zur Wiederherstellung von Sicherungen an Backint for MaxDB übergeben. Diese Anfrage besteht aus der Benutzerkennung (Siehe auch: Variablen) und einer Liste der wiederherzustellenden Dateien und/oder Pipes.

Für Dateien werden die Sicherungskennung, ihr Name und ein Verzeichnis angegeben, in dem die Datei wiederhergestellt werden soll. Für Pipes werden die Sicherungskennung, ihr Name und der Name der aktuellen Pipe angegeben, in der der Inhalt der gesicherten Pipe wiederhergestellt werden soll. Der Name des Verzeichnisses, in der die Datei angelegt werden soll, und der Name der aktuellen Pipe sind optional. Wenn keine Sicherungskennung angegeben ist, wird die letzte Sicherung der Datei oder Pipe wiederhergestellt. Die zurückgegebenen Informationen geben an, welche Dateien oder Pipes wiederhergestellt wurden und welche Sicherungen verwendet wurden.

Die Reihenfolge, in der die Dateien in der Liste wiederhergestellt werden, wird von Backint for MaxDB frei bestimmt.

### Art des Datenträgers

Für die Wiederherstellungsfunktion verwendet Backint for MaxDB eigene Informationen oder Informationen des Sicherungswerkzeugs um zu ermitteln, ob es sich bei einem wiederherzustellenden Objekt um eine Datei oder eine Pipe handelt. In der Eingabeliste können sie gemischt angegeben sein.

### Datentransfer

Wenn die Eingabeliste Dateien enthält, dann werden diese im Dateisystem wiederhergestellt.

Die Software (DBM-Server) oder der Benutzer, die/der Backint for MaxDB aufgerufen hat, stellen sicher, dass jede Pipe in der Liste mindestens einmal geöffnet und geschlossen wird. Backint for MaxDB gibt für jede Pipe, die nicht geöffnet wurde, einen Fehler zurück. Es stellt die Daten in einer Pipe in der Reihenfolge wieder her, in der sie aus der originalen, gesicherten Pipe gelesen wurden. Für einen Datentransfer müssen beide Seiten einer Pipe geöffnet werden; die eine Seite durch die Datenbanksoftware oder den Benutzer und die andere Seite durch Backint for MaxDB. Wenn Pipes, die in der Eingabedatei aufgeführt sind, nicht existieren, legt Backint for MaxDB sie entweder an oder prüft periodisch, ob sie vorhanden sind.

Pipes werden nur zum Schreiben geöffnet. Der Datentransfer durch eine Pipe endet, sobald eine Seite der Pipe geschlossen wird.

Wenn eine Datenbankversion kleiner als 7.4.03 verwendet wird und mehrere Pipes in der Eingabedatei angegeben sind, müssen die Pipes parallel und in Echtzeit verarbeitet werden, um gegenseitiges Sperren (Deadlocks) zu vermeiden. Backint for MaxDB muss also alle Pipes gleichzeitig, dabei aber unabhängig voneinander verarbeiten.

Das Öffnen oder Schreiben einer Pipe darf nicht das Öffnen und die Datentransfers der anderen in der Eingabedatei aufgeführten Pipes sperren. Zu diesem Zweck prüft Backint for MaxDB jede Pipe periodisch, um sicherzustellen, dass sie geöffnet werden kann oder dass Daten in die Pipe geschrieben werden können. Dies kann dadurch erreicht werden, dass für jede einzelne Pipe ein untergeordneter Prozess oder Thread gestartet wird und jede Synchronisation zwischen diesen Prozessen und/oder Threads vermieden wird, einschließlich der Synchronisation, die aus gemeinsam genutzten Ressourcen wie Bändern resultiert. Dann können die Prozesse oder Threads die Pipes mit normalen blockierenden Operationen öffnen und beschreiben, da das Betriebssystem periodisch zwischen den Prozessen oder Threads aller Pipes hin- und herschaltet.

Wenn eine Datenbankversion ab 7.4.03 verwendet wird und mehrere Pipes in der Eingabedatei angegeben sind, verarbeitet Backint for MaxDB ein Maximum dieser Pipes parallel. Dadurch werden minimale Wiederherstellungszeiten erreicht. Abhängigkeiten zwischen den Pipes oder den Prozessen/Threads, die diese Pipes verarbeiten, müssen während der Wiederherstellung nicht vermieden werden, da die Datenbank selbst die Pipes unabhängig voneinander verarbeitet.

MaxDB kann, muss aber nicht das parallele Wiederherstellen von Pipes unterstützen. Ebenso ist es möglich, Backint for MaxDB nur für Datenbankversionen 7.4.03 oder für alle Datenbankversionen zu konzipieren, für die diese Dokumentation gilt. Allerdings muss der unterstützte Typ der parallelen Wiederherstellung dem Typ der parallelen Sicherung entsprechen.