Backup mit dem Recovery Manager (RMAN for Beginners Teil 1)
von Sebastian Solbach, ORACLE Deutschland GmbH
Seit Oracle den Recovery Manager (RMAN) mit der Datenbank ausliefert, ist das Online Backup und Recovery einer Oracle
Datenbank kein Hexenwerk mehr. Es ist eigentlich so einfach, dass man fragen möchte, warum immer noch Datenbanken nur "offline"
gesichert werden oder gar ganz ohne ein Backup betrieben werden.
Einer der Gründe mag vielleicht sein, dass RMAN über ein anderes Interface und eine andere Syntax verfügt, als man dies
von SQL*Plus her gewöhnt ist. So trifft man hier und da immer noch auf einigen Widerstand gegen den RMAN.
Gerade aber mit 10g wurden viele Kleinigkeiten in der Bedienung des RMAN verbessert, die es erlauben ein Backup
in kürzester Zeit zu bewerkstelligen. Aber nicht nur das, auch Housekeeping Operationen der Backups und archivierten
Redologs sind fest mit dem RMAN verknüpft und erleichtern so die Aufgaben eines DBAs.
Im nachfolgenden Tipp möchte ich kurz anhand eines platten basierten Backup zeigen:
- Wie einfach RMAN zu verwenden ist
- Welche Bedeutung die Flash Recovery Area (FRA) für das Backup hat
- Welche generellen Parameter man noch beachten sollte
Anmerkung: Bilder zum Tipp werden sichtbar, indem man mit der Maus über das Brillen Icon fährt.
Minimalkonfiguration
Da mit einem RMAN Backup nur die Datenbank und alle damit zusammenhängenden Dateien gesichert werden, nicht aber die
Software, macht es durchaus Sinn, die Software auf ein anderes Laufwerk respektive RAID System auszulagern. Auf
jeden Fall muss aber das Backup und damit die FRA auf einem physikalisch anderen, unabhängigen Laufwerk,
LUN oder RAID Verbund liegen. Ein Backup soll ja einen Schutz vor Plattenkorruption bieten, und dies macht wenig Sinn,
wenn das Backup auf demselben physikalischen Laufwerk liegt, wie die zu sichernde Datenbank.
Bei kleinen Systemen würden zwar auch zwei Platten reichen, in diesem Falle würde aber entweder die Datenbank oder die FRA
auf der Software/Systemplatte liegen.
Deswegen gehe ich bei meinem Szenario von mindestens 3 Platten bzw. 3 unabhängigen RAID Systemen aus.
Hierbei verteilt sich die Datenbank folgendermaßen auf die Speicherorte, um eine höchstmögliche
Sicherheit zu gewährleisten (rot gekennzeichnete Dateien werden nicht von RMAN gesichert):
Speicherort 1 (Erste Platte z.B. sda1) |
Speicherort 2 (Zweite Platte z.B. sda2) |
Speicherort 3 (Dritte Platte z.B. sda3) Flash Recovery Area enthält: |
Software Passwortfile Logfiles/Diag Verzeichnis SPFile 1. Controlfile |
2. Controlfile Datenfiles (System-, Undo-, User- Tablespaces) Redolog Member 1 |
3. Controlfile Redolog Member 2 Archivierte Redologs Backup
|
Diese "einfache" Aufteilung wird auch verwendet, wenn ASM zum Einsatz kommt und gilt dort als "Best Practice":
- Software liegt auf den lokalen Platten
- Eine ASM Diskgruppe enthält alle Daten
- Eine zweite ASM Diskgruppe enthält die FRA
Vorbereitungen
- Archivelog Modus
- Enterprise Edition: Flashback Modus
- Flash Recovery Area
- Autobackup Controlfile/SPFile
Damit ein Online Backup durchgeführt werden kann, muss die Datenbank im Archivelog Modus betrieben werden.
Verwendet man die Enterprise Edition empfiehlt es sich ebenfalls den Flashback Modus der Datenbank anzuschalten,
da Flashback bei einigen Recovery Operationen immense Zeitvorteile verschafft. Des weiteren sollte man im
selben Zuge die Parameter der Flash Recovery Area konfigurieren.
Im Enterprise Manager passieren diese Einstellungen alle unter: "Availability" => "Recovery Settings"
Die Größe der FRA legt man auf ca. 90% der zur Verfügung stehenden Plattenkapazität fest.
Sollten mehrere Datenbanken auf dem Rechner betrieben werden, wird empfohlen, dieselbe FRA zu verwenden.
Innerhalb der FRA sollten nur Dateien der Oracle Datenbank(en) gespeichert werden: In meinem Fall eine Controlfile Kopie, jeweils
ein Member der Redologs. Die FRA wird dann automatisch für die archivierten Redologs, Flashbacklogs und Backups verwendet.
RMAN speichert alle relevanten Informationen zu den Backups (den sogenannten Recovery Katalog) im Controlfile der Datenbank.
Seit Oracle 10g ist dies für nahezu alle Backup/Recovery Maßnahmen ausreichend.
Hat man aber mehrere Datenbanken oder Data Guard im Einsatz, empfiehlt es sich,
für den Recovery Katalog eine eigene Datenbank zu verwenden. Dieser nimmt dann Backup/Recovery Informationen zu allen Datenbanken
auf und speichert diese über einen viel größeren Zeitraum, als dies mit dem Controlfile möglich wäre.
Ebenfalls wird dadurch der Restore des Controlfiles und des SPFiles erheblich vereinfacht.
Verwendet man keine eigene Datenbank für den RMAN Katalog, sondern begnügt sich, wie im Beispiel,
mit den Informationen im Controlfile, muss man das Autobackup von Controlfile und SPFile zwingend aktivieren,
da für ein aktuelles Recovery immer das letzte Controlfile mit allen Informationen vorliegen sollte.
Dies geschieht im Enterprise Manager unter: "Availability" => "Backup Settings" => "Policy"
Einrichten der Einstellungen in SQL*Plus und RMAN:
Zwei ausgewählte Backupmethoden
Ein Backup ist über Database Control schnell eingerichtet. Hierbei gibt es 2 einfache Möglichkeiten:
- Das Oracle Suggested Backup
- Ein benutzerdefiniertes komplettes Backup
Beim benutzerdefinierten Backup wird einfach die komplette Datenbank inklusive der archivierten Redologs in ein Backupset gesichert.
Da die Sicherung auf Platte erfolgt, empfiehlt es sich nicht ein "compressed" Backupset anzulegen, da dies nur zu Lasten der
Backup Zeit gehen würde. Komprimierte Backupsets bringen nur einen Performancevorteil bei Sicherung auf Band oder wenn man zu Lasten
der Backupzeit Plattenplatz sparen möchte.
Hier das RMAN Script, welches mit dem Betriebssystem Scheduler verwendet werden könnte:
Wichtig: Die Datei des RMAN Skript muss eine Dateinamensergänzung haben (*.irgendwas), ansonsten gibt RMAN eine Fehlermeldung aus.
Selbstverständlich geht das ganze auch einfacher im Database Control: "Availability" => "Schedule Backup". Das Scheduling des Jobs
übernimmt der dazugehörige Agent.
DB Control vergibt dabei dem Backup noch ein zusätzliches TAG. Da es sich bei dem Backup um eine Basis für ein inkrementelles Backup
handelt, könnten nachfolgende Backups dieses als Basis nehmen. Hierzu dient das TAG sozusagen als Referenz, d.h. welches Backup
dient als Basis für das nachfolgende inkrementelles Level 1 Backup.
Allerdings sind die Zeiten eines Recovery länger, wenn bei einem Restore alle Änderungen von den Archivelogs nachgezogen werden müssen.
Aus diesem Grunde funktioniert das Oracle Suggested Backup auf Basis von Image Kopien der Datendateien. Diese Kopien werden beim
jeweiligen neuen Backup (z.B. täglich) auf den neuesten Stand recovered, so dass im Falle eines Recovery nur die Archivelogs
des letzten Tages für ein vollständiges Recovery nachgezogen werden müssen. Hiermit wird die Zeit eines Recovery erheblich
verringert.
Das Backup besteht hierbei aus 2 Teilen: Dem Recovery der Image Kopien mit den vorhanden Archivelogs 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. Folgende Tabelle verdeutlicht das Vorgehen, wenn das Backup jeden Tag läuft:
Lauf | Recover Kommando | Backup Kommando |
1 | Es passiert nichts, da noch kein Backup vorhanden ist | Da kein Backup vorhanden ist, wird ein Level 0 Backup (Basis für ein inkrementelles Backup) durchgeführt. |
2 | Es passiert nichts, da kein inkrementelles Backup vorhanden ist, das angewendet werden könnte | Ein inkrementelles Backup Level 1 mit den Blockänderungen des Vortags |
≥ 3 | Recovery der Image Kopien, mit dem inkrementellen Level 1 Backup des Vortags | Ein inkrementelles Backup Level 1 mit den Blockänderungen des Vortags |
Hier das RMAN Skript, um dies zu bewerkstelligen:
Egal ob nun eine oder beide Varianten für das Backup eingesetzt werden - auf alle Fälle hat man mit diesen wenigen Schritten
schon eine gute Grundlage zur Datensicherheit geschaffen.
Flashback Recovery Area (FRA)
Grundsätzlich muss man sich bei eingerichtetem Backup und genügend Platz für die FRA keine Gedanken um ein Housekeeping zu machen.
Was heißt denn aber nun genügend Platz? Ausgehend von den Überlegungen für das Backup aus dem vorhergehenden Teil
liegt man mit folgendem Wert auf der "sicheren" Seite:
2x Datenbank + (2x archivierte Redologs pro Tag) * Flashback Retention Time (in Tagen) + Online Redologs + Controlfile
Die Standardeinstellungen für RMAN sorgen dafür, dass nicht mehr notwendige Dateien automatisch aus der FRA gelöscht werden.
Dabei handelt es sich um die Einstellungen der "RETENTION POLICY" und der "ARCHIVELOG DELETION POLICY".
Der Standard sieht vor, dass alle notwendigen Dateien für 1 Backup (also um 1 komplettes Recovery durchzuführen) vorhanden sind.
Ältere Backups werden auf obsolete gesetzt und automatisch gelöscht, falls Platz benötigt wird.
Genauso verhält es sich bei der Archivelog Deletion Policy, wenn diese auf dem Standard "NONE" steht. Alle Archivelogs, die
- Mindestens 1x gesichert worden sind
- Nicht mehr für ein Recovery des letzten Backups gebraucht werden
- Nicht benötigt werden, um die Flashbackzeit oder einen garantiertem Restorepoint zu garantieren
werden auf obsolete gesetzt und können automatisch gelöscht werden.
Möchte man trotzdem selber das Housekeeping betreiben, so kann man sich über die Database Control Seite "Availability" => "Manage Current Backups"
eine Übersicht verschaffen und die Löschaktion durchführen (Delete Obsolete).
Das ganze funktioniert selbstverständlich auch in RMAN:
Ein paar wichtige Parameter fürs Backup
Die wichtigsten Backup Parameter kann man im Database Control über "Availability" => "Setup" ("Backup Settings", "Recovery Settings"
und "Recovery Catalog Settings") festlegen oder über den RMAN konfigurieren:
Generell sind die Standards recht gut. Folgenden 2 Parametern sollte man aber immer etwas Aufmerksamkeit widmen:
- RETENTION POLICY: Die Retention Policy kann die Anzahl an vollständigen Backups, die in der FRA gespeichert sein sollten oder ein
sogenanntes Recovery Window enthalten. Konfiguriert man ein Recovery Window, so gibt dieses "Fenster" an, dass jegliches
Backup innerhalb dieses Zeitrahmens liegen muss. Gleichzeitig gibt dieses "Fenster" damit aber auch an, dass
für diesen Zeitraum ein Point in Time Recovery möglich ist.
Der Befehl gibt somit an, dass alle Informationen vorgehalten werden um mit einem Point in Time Recovery zu einem beliebigen Zeitraum
in diesen Tagen zu gelangen. Allerdings sollte dabei auch der Parameter control_file_record_keep_time der Datenbank berücksichtigt werden.
Dieser gibt an, wie alt die Informationen im Controlfile der Datenbank sein dürfen, bevor diese überschrieben werden.
Der Parameter sollte an das Recovery Window angepasst werden. Da das Controlfile aber nur beschränkten Speicher für die Backup
Einträge hat, empfiehlt sich bei größeren Recovery Windows eine Datenbank für den Recovery Katalog zu verwenden.
- CONTROLFILE AUTOBACKUP: Wie oben schon erwähnt muss dieser Parameter auf ON gesetzt werden, wenn keine Datenbank für den Recovery Katalog verwendet wird.
Einem erfolgreichen Backup steht nun nichts mehr im Wege. In einem der nächsten Tipps werden einige typische Recovery Szenarien bei diesem Setup behandelt.
Nützliche Links und Referenzen
Oracle Dokumentation: Backup and Recovery User's Guide
Zurück zur Community-Seite
|