Restore und Recovery mit dem Recovery Manager (RMAN for Beginners Teil 2)
von Sebastian Solbach, ORACLE Deutschland GmbH
Nachdem im letzten Recovery Manager Tipp das Thema Backup ausführlich behandelt wurde,
geht es in diesem Tipp darum, wie Sie mit Hilfe dieser Backups ein Recovery durchführen.
Zwar sollte mit Oracle 11g der Recovery Advisor verwendet werden, um
die optimale Wiederherstellungsstrategie zu finden, aber es gibt ein paar nützliche Funktionalitäten, wenn das
Restore manuell durchgeführt wird. Hierzu gehört unter anderem das Restore an einen anderen Speicherort
bzw. auf eine andere Diskgruppe in ASM.
Der Vollständigkeit halber werden die Grundlagen des Restores nochmals aufgelistet, wie
das Recovery nach Verlust des SPFiles, eines Controlfiles,
einer Datendatei und eines Redolog Members.
Als Basis für die erweiterten Themen und den Umzug während des Restores dient wieder die "Minimalkonfiguration" einer Datenbank
anhand derer die unterschiedlichen Ausfallszenarien dargestellt werden:
Minimalkonfiguration
Wie im vorhergehenden Tipp besprochen, sollte eine Minimalkonfiguration aus mindestens 3 unabhängigen Platten bzw. 3
unabhängigen RAID Systemen bestehen, ob nun mit oder ohne ASM. Rot gekennzeichnete Dateien werden dabei nicht von RMAN mit 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 Konfiguration gewährleistet, dass beim kompletten Verlust eines Speicherortes immer
ein vollständiges Restore ohne jeglichen Datenverlust erfolgen kann.
Deswegen sind Szenarien wie der "Verlust aller Controlfiles" und der "Verlust aller Online Redologs" sehr unwahrscheinlich.
Maximal ein "Worst Case Szenario", d.h. der Verlust aller Platten und das Zurückgreifen auf ein Backup von Band/externe Platte
sollte noch näher betrachtet werden.
Alle Szenarien basieren hierbei auf den Informationen des RMAN Katalog im Controlfile und dem damit verbundenen automatischem Backup von SPFile
und Controlfile (Autobackup).
Des Weiteren gehen die Szenarien von der Verwendung der FRA aus. Beachten Sie, dass sich einige der Restore Szenarien unterscheiden,
wenn eine Datenbank als Recovery Katalog verwendet wird oder wenn nicht die FRA das Backup und Autobackup enthält.
Bevor Sie selber mit Testen anfangen, sollte geprüft werden, ob Ihr Backup auch vollständig ist und den Anforderungen
Ihrer Backupstrategie entspricht.
Recovery nach Verlust oder Korruption des SPFiles
Ist das SPFile korrupt oder gelöscht, so kann die Datenbank nicht mehr gestartet werden. Folgende Fehler
deuten auf ein Problem mit dem SPFile hin: "ORA-01078" gefolgt von einem
"LRM-00109: could not open parameter file". Mit wenigen RMAN Befehlen
wird das SPFile aus dem Autobackup wiederhergestellt. Da in folgendem Beispiel die FRA verwendet wird, ist kein SET DBID notwendig.
Recovery nach Verlust oder Korruption eines Controlfile
Sind nicht alle Controlfiles korrupt oder gelöscht, empfiehlt es sich, von einem funktionierenden Controlfile einfach
eine Kopie über RMAN zu erzeugen. Welches Controlfile noch funktioniert, bzw. welche Controlfiles korrupt sind, erfährt man aus dem
Alert.log der Datenbank. Ein "RESTORE FROM AUTOBACKUP" ist nur beim Verlust aller Controlfiles empfohlen,
da nach einem solchen Recovery die Datenbank mit "RESETLOGS" geöffnet werden muss. Ein "ORA-00205: error in identifying control file
, check alert log for more info" deutet auf den Verlust eines Controlfile hin.
Recovery nach Verlust, Korruption einer Datendatei oder eines Tablespaces
Korrupte oder nicht vorhandene Tablespaces werden mit einem "ORA-01157", gefolgt von einem "ORA-01110: data file 4" quittiert.
Es gibt sehr elegante Möglichkeiten korrupte Tablespaces / Datendateien auch online wiederherzustellen (Siehe hierzu auch
die RMAN Dokumentation). Dies funktioniert aber nicht für SYSTEM oder UNDO Tablespace.
Deswegen ist hier die Variante aufgelistet, die beliebige Tablespaces/Datendateien wiederherstellt:
Das Wiederherstellen von Datenfiles / Tablespaces passiert immer in 2 Schritten: Dem Restore, um das Datenfile
aus dem Backup hervorzuholen und dem Recovery, um das Datenfile mit Hilfe der Archive und Online Redologs
auf den aktuellen Stand zu bringen.
Alternativ kann auch mit der Datenfile Nummer (RESTORE DATAFILE 4) oder dem Tablespace Namen (RECOVER TABLESPACE USERS) gearbeitet werden.
Eine Ausnahme bildet hierbei der TEMP Tablespace. Dieser wird von RMAN nicht mit-gesichert, da er keine
persistenten Daten enthält. Seit 10g wird der TEMP Tablespace automatisch angelegt, falls er beim
Startup nicht vorhanden ist.
Recovery nach Verlust, Korruption eines Redolog Members
Anders als bei den vorhergehenden Fällen hat der Verlust / die Korruption eines Redolog Members keine direkt sichtbaren
Auswirkungen beim Datenbank Startup. Ein Fehler ist nur anhand eines ORA-00313 im Alert.log der Datenbank sichtbar.
Trotzdem sollte der Fehler so schnell wie möglich behoben werden, da ansonsten im Falle eines Plattenausfalles
keine Garantie mehr besteht, die aktuellsten Transaktionen retten zu können.
Dieser Fehler wird nicht direkt in RMAN behoben, sondern während des laufenden Betriebs in SQL:
Hinweis: Man sollte darauf achten, dass neu angelegte Log Members erst einmal inaktiv sind.
Dies sieht man am Status INVALID im STATUS Feld von V$LOGFILE.
Gerade wenn man weitere Recovery Tests macht, kann es durch die ungültigen Redologs (Status: INVALID) zu unvorhergesehenen Problemen kommen,
da die Logfile Spiegelung erst dann wieder aktiv ist, wenn alle Logfiles aktiv sind.
Daher wird empfohlen, nach den Änderungen an den Redologs in jedem Fall mit ALTER SYSTEM SWITCH LOGFILE alle
Redologs einmal neu zu initialisieren.
Recovery nach Verlust des kompletten 1. Speicherortes
In diesem Fall bedeutet das den Verlust des Software Home, Passwort File, SPFile und einer Controldatei und wahrscheinlich auch des
Betriebssystems. Die Wiederherstellung des OS und die Installation der Oracle Software (mit denselben Patches!) ist
hierbei nicht Gegenstand dieses Artikels und kann im Notfall über eine Neuinstallation bewerkstelligt werden.
Die Passwortdatei lässt sich unter /database folgendermaßen erzeugen. Bei Unix/Linux unter /dbs
und mit einfachen Hochkommata ' ':
Ist Ihr Betriebssystem Windows, so muss noch der Service mit Hilfe von oradim angelegt werden:
Zuletzt holt man mit Hilfe des RMAN das SPFile aus dem Autobackup zurück und die fehlende Controldatei aus einer Kopie:
Nun läuft die Datenbank wieder. Hat man jedoch auch Database Control im Einsatz, ist durch den Verlust
des Software Home auch die Konfiguration von DBControl nicht mehr vorhanden und muss neu erstellt werden:
Unter Umständen sollte noch die alte Verzeichnisstruktur unter /admin wiedererstellt werden.
Recovery nach Verlust des kompletten 2. Speicherortes
Sollte dieser Speicherort eine ASM Diskgruppe sein, muss natürlich erst wieder eine Diskgruppe
mit dem entsprechenden Namen erstellt werden, damit alle Datendateien, ein Controlfile und die Online Redolog
Members wieder zurück gesichert werden können. Bei einem Real Application Cluster, wo das SPFile ebenfalls in ASM liegt,
muss natürlich dasselbe auch wiederhergestellt werden (siehe hierzu vorhergehender Abschnitt).
Als letztes müssen noch über "ALTER DATABASE DROP LOGFILE MEMBER" und "ALTER DATABASE ADD LOGFILE MEMBER"
die Redolog Members neu erzeugt werden (wie weiter oben beschrieben). Auch hier ist es empfohlen, mit
mehreren "ALTER SYSTEM SWITCH LOGFILE" alle Logfile Members aktiv zu setzten.
Alternativ kann bei einem Restore natürlich auch der Filename Convert Parameter mitgegeben werden, der das
Rücksichern an einen anderen Speicherort bzw. in eine andere Diskgruppe erlaubt.
Das SET NEWNAME FOR DATABASE und SET NEWNAME FOR TABLESPACE ist hierbei eine erhebliche Erleichterung in 11gR2,
da nicht mehr für jedes Datenfile und Tempfile separat das NEWNAME Kommando ausgeführt werden muss.
Auch für Filesysteme birgt dies eine Erleichterung, da auch die Formatspezifikationen um %b erweitert wurden.
%b steht für den Dateinamen ohne Pfad und erlaubt somit eine schnelle Änderung der Pfade bei einem Restore.
Bei den älteren Oracle Versionen muss beim Restore für jedes Datenfile und Tempfile ein eigener SET NEWNAME
Eintrag vorhanden sein.
Recovery nach Verlust des 3. Speicherortes (FRA)
Der Verlust der FRA stellt für die Datenbank im ersten Augenblick keinen wirklich kritischen Zustand dar.
Zwar müssen auch das Controlfile und die Online Redologs wieder erstellt werden, aber die Datenbank läuft
theoretisch auch ohne FRA. Denken Sie nur daran, dass Sie in diesem Fall ohne jegliches Netz und doppelten Boden
weiterarbeiten. Deswegen sollte auch der Verlust der FRA schnellst möglichst behoben werden.
Auch hier müssen nun die Redolog Members wieder neu erstellt werden.
Es ist möglich, dass beim Öffnen der Datenbank ein "ORA-38760: This database instance failed to turn on flashback database"
auftritt, falls Flashback Database aktiviert war. Dies lässt sich relativ leicht durch ein
"ALTER DATABASE FLASHBACK OFF;" und "ALTER DATABASE FLASHBACK ON;" im Mount Status der Datenbank beheben.
Sollte die FRA nicht mehr an derselben Stelle stehen, muss ein Parameter im SPFile überschrieben werden, da die Datenbank
mit einem "ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated" nicht mehr startet.
Aber wie geht das, wenn mein SPFile auf ASM liegt?
Eine INIT.ORA kann durchaus nur einen Parameter aus einem SPFile überschreiben und ansonsten alle anderen
Einstellungen aus dem SPFile verwenden. Hierzu muss einfach der zu überschreibende Parameter in der INIT.ORA
nochmals auftauchen (Reihenfolge beachten!):
Da alle Backups durch den Verlust der FRA gelöscht wurden, sollte danach dringend ein erneutes Backup und eine
Säuberung des Recovery Kataloges passieren (DELETE OBSOLETE, CROSSCHECK, DELETE EXPIRED BACKUP, BACKUP DATABASE
PLUS ARCHIVE LOG).
Hinweise: V$LOGFILE einhält eine Spalte IS_RECOVERY_DEST_FILE. Enthält diese
ein YES, so rechnet die Oracle Datenbank die Logfiles zu dem verwendeten Platz der FRA. Diese Spalte wird aber
nur bei der Verwendung von OMF (was mit ASM fast immer der Fall ist) genutzt. Leider erkennt
Oracle das nicht automatisch, wenn nur ein Logfile Member hinzugefügt wird. Im Moment ist es ebenfalls noch nicht
möglich, dies beim ADD LOGFILE MEMBER mit anzugeben. Soll dies nach einem Ausfall der FRA wieder richtig
hergestellt werden, so müssen die kompletten Logfile Gruppen über ALTER DATABASE DROP/ADD LOGFILE [THREAD X] GROUP Y
erstellt werden. Dann sorgt die Datenbank dafür, dass die Werte in IS_RECOVERY_DEST_FILE richtig gefüllt werden.
Das "Worst Case Szenario"
Im Gegensatz zu den vorhergehenden Szenarien, besitzt man bei diesem Szenario keine Online Redologs mehr. Das heißt ein komplettes
Recovery ist nicht möglich. Um auf einen konsistenten Stand der Datenbank zu kommen,
ist eine Sicherung eines Backups + Archivelogs und dazugehörigem Autobackup aus der FRA auf Tape
oder auf einem Fileserver notwendig.
Das Restore ist erheblich einfacher, wenn das Backup in der Ordnerstruktur der FRA vorliegt.
Im Tipp wird davon ausgegangen, dass die Software wie unter "Verlust des 1. Speicherortes" beschrieben wiederhergestellt wurde
und das Tape Backup in der Struktur der FRA wieder in den FRA Ordner zurückkopiert wurde.
Unterverzeichnisse unterhalb ARCHIVELOG, AUTOBACKUP, etc. (die das Datum enthalten) sind dabei nicht notwendig.
Dies sollte im allgemeinen die gängigen Szenarien beim Recovery abdecken, und Sie können beruhigt in die Zukunft blicken,
und müssen sich um Server- und Plattenausfälle keine Sorgen mehr machen.
Nochmals der Hinweis: Ab Oracle 11g ist die Verwendung des
Recovery Advisor empfohlen.
Dieser analysiert Fehler, bietet die optimale Recovery Strategie und kann Ihnen sogar
die eigentliche Reparatur abnehmen. Aber selbst für 10g kann der Recovery Advisor hilfreich sein.
Hierfür stellen Sie einfach den Fehler bei einer 11g Datenbank nach und lassen sich die Empfehlung anzeigen.
Nützliche Links und Referenzen
Oracle Dokumentation: Backup and Recovery Reference
Backup mit dem Recovery Manager (RMAN for Beginners Teil 1)
Recovery Advisor Tipp
Zurück zur Community-Seite
|