Murrstock - stock.adobe.com

Leitfaden für das Datenbank-Backup mit Oracle RMAN

Hier erfahren Sie, wie Oracle RMAN für verschiedene Arten von Datenbank-Backups eingesetzt wird und welche Befehle Admins kennen müssen, um das Tool optimal nutzen zu können.

Oracle Recovery Manager ist ein integriertes Dienstprogramm für die Sicherung und Wiederherstellung von Datenbanken. RMAN wurde entwickelt, um Integritätsprüfungen durchzuführen, die mit der benutzerverwalteten Methode einfach nicht möglich sind. Bei der benutzerspezifischen Datensicherung erfolgt das Backup manuell, indem Befehle aus SQL Plus und des Hostbetriebssystems genutzt werden. Zusätzlich zu diesen beiden Backup-Verfahren hat der Anwender auch die Option Drittanbieterlösungen für Backup und Recovery zu nutzen, beispielsweise von Vinchin. Damit lassen sich zusätzlich zu den Oracle-Datenbanken auch MySQLSQL Server, Maria DB, Postgres Pro oder PostgreSQL in die Datensicherung einbinden.

Das Dienstprogramm arbeitet mit Medienverwaltungssoftware von Drittanbietern, und anders als bei der benutzerverwalteten Methode können Benutzer mit RMAN inkrementelle Backups erstellen. Dieses Oracle RMAN-Tutorial führt Sie durch die Schritte zur Erstellung vollständiger Datenbank-Backups, komprimierter Backups und inkrementeller Backups.

Da es sich bei RMAN um ein Befehlszeilen-Tool handelt, ist die Lernkurve möglicherweise etwas steil. Dennoch ähneln viele der Befehle der natürlichen Sprache, was den Lernprozess erleichtert.

Erstellen von Datenbank-Backups

Das wichtigste Merkmal der RMAN-Backups ist, dass diese online durchgeführt werden können. Das Interface und der Syntax von RMAN sind anders angelegt als bei SQL Plus, aber der Hersteller arbeitet beständig daran, die Bedienung so einfach wie möglich zu gestalten. Ein Backup mit RMAN sichert die Datenbanken und damit verbundenen Daten, nicht aber die Software selbst, die auf einem anderen Laufwerk oder RAID-System vorgehalten werden sollte.

Eine Minimalkonfiguration sollte aus drei Speicherorten (Festplatte, LUN oder RAID-System) bestehen. Der erste für die Software, die Passwortdatei, die Logfiles/Diag Verzeichnis, das SPFile und das Controlfile. Am zweiten Speicherort werden das zweite Controlfile, die Datenfiles und das Redo Log Member1 abgelegt. Der dritte Speicher enthält das Flash Recovery Area (FRA) sowie das 3. Controlfile, Redo Log Member 2, archivierte Redo Logs und das Backup. Das gilt auch dann, wenn Oracle Automatic Storage Management (ASM) zum Einsatz kommt. In diesem Fall operiert die Software auf der lokalen Festplatte, eine erste ASM Diskgruppe speichert alle Daten, eine zweite ASM Diskgruppe enthält die FRA.

Für ein Online-Backup muss die jeweilige Datenbank im Archive-Log-Modus betrieben werden. Zusätzlich kann der Anwender (Enterprise Edition) den Flashback-Modus der Datenbank aktivieren, was Zeitvorteile beim Wiederherstellungsprozess bietet. An dieser Stelle sollte der Admin auch die FRA einrichten. Die Größe der FRA legt der Admin am besten mit 90 Prozent der verfügbaren Kapazität fest. Hier können auch mehrere Oracle-Datenbanken gespeichert, ebenso die archivierten Redo Logs, Flashback Logs und Backups.

Alle relevanten Backup-Informationen legt RMAN im Controlfile der Datenbank ab. Bei mehreren Datenbanken empfiehlt der Hersteller eine separate Datenbank für den Recovery-Katalog zu verwenden. Somit werden die Datenbankinformationen länger als im Controlfile gespeichert. Wird keine dedizierte Datenbank genutzt, muss das Autobackup für Controlfile und SPFile aktiviert sein.

Es gibt zwei Backup-Verfahren: das Oracle Suggested Backup und das benutzerdefinierte komplette Backup. Bei letzterem erfolgt die Sicherung der vollständigen Datenbank und der archivierten Redo Logs in ein Backupset. Eine Komprimierung (compressed) ist nicht empfehlenswert, da dies die Backup-Zeit negativ beeinflussen könnte. Ein so genanntes compressed Backupset lohnt sich nur bei einer Sicherung auf Band oder wenn wirklich Plattenplatz gespart werden soll. Das Backup besteht hierbei aus 2 Teilen: Dem Recovery der Image Kopien mit den vorhanden Archive Logs und der inkrementellen Level 1 Sicherung der neuen Änderungen. Hierbei kommt es zwar bei den ersten Aufrufen zu einer Warnung (beim Recovery), da noch kein Recovery stattfinden kann, dies ist aber vernachlässigbar. Die wichtigsten Backup Parameter kann man im Database Control über Availability -> Setup (Backup SettingsRecovery Settings und Recovery Catalog Settings) festlegen oder über den RMAN konfigurieren

Es überrascht nicht, dass der Befehl zur Erstellung einer RMAN-Sicherung BACKUP heißt. Um eine vollständige Datenbank zu sichern, würden Sie zum Beispiel diesen Befehl verwenden:

BACKUP DATABASE;

Um die Datenbank und die zugehörigen Archivprotokolle (Archivelogs) zu sichern, verwenden Sie den folgenden Befehl:

BACKUP DATABASE PLUS ARCHIVELOG;

Der BACKUP-Befehl ist bei weitem nicht so einschränkend, wie es diese RMAN-Tutorial-Beispiele vermuten lassen, und er enthält eine Vielzahl hilfreicher Optionen.

Eine dieser Optionen ist die Verwendung des TAG-Parameters. Wenn Sie RMAN verwenden, um regelmäßig Backups zu erstellen, benötigen Sie eine Möglichkeit, die Backups voneinander zu unterscheiden. Hier kommen die Sicherungs-Tags ins Spiel.

Wenn Sie den Befehl LIST verwenden, um eine Liste der aktuellen Sicherungen anzuzeigen, wird jedem Backup ein Tag zugewiesen. Sie können jedoch anstelle der vom System generierten Kennzeichnung eine benutzerdefinierte Kennzeichnung auf eine Sicherung anwenden.

Die einfachste Art, eine Sicherung zu erstellen, ist die Verwendung des Befehls BACKUP DATABASE;. Wenn ich also eine Markierung mit meinem Namen (Brien) erstellen möchte, um zu zeigen, dass ich die Sicherung erstellt habe, würde ich diesen Befehl verwenden:

BACKUP DATABASE TAG = 'Brien';

Verwendung des Befehls LIST

Wie bereits erwähnt, ist es relativ üblich, mit RMAN mehrere Sicherungen zu erstellen. Mit dem LIST-Befehl können Sie sehen, welche Sicherungen erstellt wurden und für Sie verfügbar sind. In der einfachsten Form können Sie folgendes eingeben:

LIST BACKUP;

Dieser Befehl zeigt Ihnen alle Backups an, die derzeit existieren. Je nachdem, was Sie gesichert haben, könnte die Liste der Sicherungen jedoch etwas überwältigend sein. Zum Glück gibt es einige Möglichkeiten, die Liste einzugrenzen. Wenn Sie zum Beispiel nur die Datenbanksicherungen sehen wollen, geben Sie folgenden Befehl ein:

LIST BACKUP OF DATABASE;

Auf ähnliche Weise können Sie eine Liste der Sicherungen einer bestimmten Datendatei erstellen, indem Sie diesen Befehl eingeben:

LIST BACKUP OF DATAFILE <Dateiname>;

Komprimierung von Backups in RMAN

Mit RMAN können Sie – wie oben erwähnt – komprimierte Sicherungen erstellen, um den Platzbedarf der Sicherung zu reduzieren. Das Ausmaß, in dem die Komprimierung eine Sicherung verkleinern kann, hängt stark von den Daten in der Datenbank ab, aber es ist üblich, eine Verkleinerungsrate von 70 bis 80 Prozent zu erreichen.

Der Befehl zur Erstellung eines komprimierten Backups ist einfach, aber es ist wichtig, das Konzept eines Backupsets zu verstehen.

Bisher wurde in diesem RMAN-Tutorial an mehreren Beispielen gezeigt, wie man mit dem BACKUP-Befehl eine Sicherung erstellt. Technisch gesehen ist das, was der BACKUP-Befehl erstellt, ein Backupset, das Daten aus einer oder mehreren Datendateien, archivierten Redo Logs, Controlfiles oder Serverparameterdateien enthält.

Wenn Sie eine Sicherung komprimieren, komprimieren Sie das Backupset. Das Kommando erwähnt sogar das Backupset. Wenn Sie den Befehl BACKUP DATABASE; ausführen möchten, aber die resultierende Sicherung komprimiert werden soll, würde der Befehl wie folgt lauten:

BACKUP AS COMPRESSED BACKUPSET DATABASE;

Inkrementelle Sicherungen erstellen

RMAN kann auch inkrementelle Sicherungen erstellen. Da dieser Prozess jedoch etwas anders abläuft, als Sie es erwarten würden, werden wir in diesem RMAN-Tutorial einen genaueren Blick auf diesen Prozess werfen.

Inkrementelle Sicherungen beziehen sich in der Regel auf eine Sicherung von allem, was sich seit der letzten Vollsicherung geändert hat. Auch wenn der Befehl BACKUP DATABASE; eine Vollsicherung erstellt, ist die resultierende Sicherung nicht mit inkrementellen Sicherungen kompatibel.

Wenn Sie inkrementelle Backups erstellen wollen, muss die Vollsicherung Level 0 sein. Die Level-0-Sicherung ist nur eine andere Art der Vollsicherung, die jedoch als Grundlage für inkrementelle Backups verwendet werden kann. Sie können eine Level-0-Sicherung mit dem folgenden Befehl erstellen:

BACKUP INCREMENTAL LEVEL 0 DATABASE;

Sobald eine Level-0-Sicherung vorhanden ist, können Sie inkrementelle Sicherungen erstellen, die entweder differenziell oder kumulativ sind. Differenzielle Sicherungen sind die Standardeinstellung und werden mit einem Befehl erstellt, der fast identisch mit dem Befehl zur Erstellung einer Level-0-Sicherung ist. Der einzige Unterschied besteht darin, dass Sie stattdessen eine Level-1-Sicherung erstellen müssen. Der Befehl lautet wie folgt:

BACKUP INCREMENTAL LEVEL 1 DATABASE;

Wenn die Sicherung kumulativ sein soll, lautet der Befehl wie folgt:

BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;

Wenn Sie ein inkrementelles Backup erstellen, wird diese Sicherung als Level-1-Sicherung definiert. Ein Level-1-Backup muss eine übergeordnete Sicherung haben, und diese übergeordnete Sicherung kann eine Level-0-Sicherung oder eine vorherige Level-1-Sicherung sein.

Sicherung einer Datenbank plus Archivierungsprotokoll

Beim Backup einer Oracle-Datenbank ist es in der Regel ratsam, auch das Archivprotokoll (Archive Log) zu sichern. Das Archivprotokoll ist im Wesentlichen ein Protokoll der Transaktionshistorie, das Sie bei der Wiederherstellung einer Datenbank verwenden können.

Um eine Datenbank und ein Archivprotokoll zu sichern, machen Sie zunächst das Archivprotokoll aktuell, indem Sie diesen Befehl eingeben:

ALTER SYSTEM ARCHIVE LOG CURRENT

Anschließend müssen Sie mit diesem Befehl eine Sicherung des Archivprotokolls erstellen:

BACKUP ARCHIVE LOG ALL

Nun können Sie mit dem Befehl BACKUP eine Sicherungskopie Ihres Systems erstellen. Nach Abschluss der Sicherung ist es ratsam, die beiden zuvor genannten Befehle zu wiederholen, um alle Transaktionen zu erfassen, die während des Backups stattgefunden haben.

Wiederherstellen einer Datenbank

Wurde wie eingangs erwähnt eine Minimalkonfiguration mit drei Speicherorten eingerichtet, so lassen sich verschiedene Wiederherstellungsszenarien umsetzen. Geht ein Speicherort verloren, so kann immer noch ein vollständiges Restore durchgeführt werden. Das erfolgt immer über dem RMAN-Katalog und den damit verbundenen automatischen Backups von SPFile und Controlfile. Zu den möglichen Wiederherstellungsszenarien gehören die folgenden:

  • Recovery nach Verlust oder Korruption des SPFiles
  • Recovery nach Verlust oder Korruption eines Controlfile
  • Recovery nach Verlust, Korruption einer Datendatei oder eines Tablespaces
  • Recovery nach Verlust, Korruption eines Redolog Members
  • Recovery nach Verlust des kompletten ersten Speicherortes
  • Recovery nach Verlust des kompletten zweiten Speicherortes
  • Recovery nach Verlust des dritten Speicherortes (FRA)

Die nötigen Befehlssätze und Anleitungen für ein Restore/Recovery mit dem RMAN lassen sich auf dieser Webseite nachlesen.

Die Wiederherstellung einer Datenbank besteht im Wesentlichen aus drei Schritten, obwohl zusätzliche Schritte zur Vorbereitung der Wiederherstellung erforderlich sein können. Zusätzliche Schritte können darin bestehen, sicherzustellen, dass die Sicherung für die richtigen Benutzer zugänglich ist, oder das Backup Storage auf der Zieldatenbank zu konfigurieren.

Der erste Schritt ist die Wiederherstellung der Steuerdatei (Controlfile). Dies ist jedoch nur dann erforderlich, wenn keine Steuerdatei vorhanden ist, was beispielsweise bei der Wiederherstellung einer Datenbank auf einem neuen Server der Fall wäre. Die Befehle zur Wiederherstellung der Steuerdatei lauten wie folgt:

SET DBID <DBID-Nummer>;

STARTUP NOMOUNT;

RESTORE CONTROLFILE FROM "/backup/rman/<name>";

ALTER DATABASE MOUNT;

Der zweite Schritt des Prozesses ist die Wiederherstellung der Datenbank. Dies kann mit einem einzigen Befehl erledigt werden:

RESTORE DATABASE;

Der letzte Schritt des Prozesses ist die Wiederherstellung der Datenbank. Im einfachsten Fall bedeutet dies die Eingabe des Befehls RECOVER DATABASE;. Sie können jedoch Variationen dieses Befehls verwenden, um einen bestimmten Tabellenbereich (Table Space) oder bestimmte Datendateien wiederherzustellen.

Mehr über die Möglichkeiten der RMAN-Backup-Befehle erfahren Sie in der Oracle-Dokumentation. Umfassende Wiederherstellungsanweisungen finden Sie auf der Website von Oracle.

Erfahren Sie mehr über Backup-Lösungen und Tools