## Sicherungsfunktion (backup)

### Allgemeine Funktionsbeschreibung

Mit Hilfe der Sicherungsfunktion wird eine Sicherungsanfrage für die in einer Liste angegebenen Dateien oder Pipes definiert und an Backint for MaxDB übermittelt. Backint for MaxDB sichert diese Dateien oder Pipes und erzeugt als Antwort eine Sicherungskennung für die gesicherten Dateien oder Pipes, welche die Sicherung eindeutig kennzeichnet.

Backint for MaxDB informiert den Benutzer, welche Dateien oder Pipes erfolgreich gesichert wurden und welche nicht, welche Sicherungskennung den einzelnen Dateien und Pipes zugeordnet wurde, und wie viele Bytes für jede Pipe gesichert wurden.

Die Reihenfolge, in der die Dateien und/oder Pipes in der Liste gesichert werden, wird vom externen Sicherungswerkzeug frei bestimmt.

### Art der zu sichernden Objekte

In der Eingabeliste für die Sicherungsfunktion ist gekennzeichnet, ob ein zu sicherndes Objekt eine Datei oder eine Pipe ist. Sie können in der Eingabeliste gemischt angegeben sein.

Backint for MaxDB und BACKINT (für Oracle) unterscheiden sich in den zulässigen Objekten für die Sicherung:

BACKINT (für Oracle) lässt Dateien, Verzeichnisse und Raw Devices zu.

Backint for MaxDB lässt nur Dateien und Pipes zu.

### Datentransfer

Wenn die Eingabeliste Dateien enthält, werden diese so gesichert, wie sie im Dateisystem abgelegt sind.

Für das Wiederherstellen von Pipes gelten folgende Regeln:

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. 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 Lesen 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 Lesen 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 aus der Pipe gelesen 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. So können die Prozesse oder Threads die Pipes mit normalen blockierenden Operationen öffnen und lesen, 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 diese Pipes zumindest teilweise parallel. Andernfalls würde die Möglichkeit, parallel sichern zu können, keine Vorteile bieten. Abhängigkeiten zwischen den Pipes oder den Prozessen/Threads, die diese Pipes verarbeiten, müssen während des Sicherungsvorganges nicht vermieden werden, da die Datenbank selbst die Pipes unabhängig voneinander verarbeitet.

MaxDB kann, muss aber nicht das parallele Sichern 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.