Das Thema “Backup” ist eine absolute IT-Grundlage. Unabhängig davon wie hochverfügbar eine Infrastruktur ausgelegt ist, sollte die Erstellung von Datensicherungen grundsätzlich kein Gegenstand einer Diskussion sein. Die Ausgestaltung der Backups (Häufigkeit, Ablage, Tests, etc.) unterliegt natürlich den jeweiligen Anforderungen des Geschäftsbetriebes.
Doch Backup ist eben nicht gleich Backup. Das wird schnell klar, wenn man sich verschiedene Anwendungsszenarien für die Wiederherstellung von Daten(banken) anschaut. Insbesondere im Bereich der Oracle Datenbanken scheiden sich hier die Geister. In nicht wenigen Fällen ist man der Meinung, dass die Erstellung von “Exports mit DataPump” eine ausreichende Datensicherung darstellen.
Aber ist ein DataPump-Export wirklich die optimale Backup-Strategie? Wir möchten dazu einen kurzen Vergleich zwischen DataPump-Exports und den mittels Oracle Recovery Manager erstellten RMAN-Backups anstellen. Dazu werden im Folgenden die Möglichkeiten beider Varianten angerissen und bewertet.
Beim DataPump-Export werden sogenannte Dumpfiles angelegt. Diese beinhalten die logischen Elemente einer Oracle Datenbank. Hierzu zählen beispielsweise Tabellen, Trigger, Constraints, sowie Metadaten und Steuerinformationen. Für den Export können verschiedene Modi verwendet werden, wie beispielsweise:
Ein weiterer, spezieller Modus ist der “Transportable Tablespace Mode”, welcher allerdings nur in der Oracle Datenbank Enterprise Edition zur Verfügung steht.
Es ist möglich, die Daten konsistent zu exportieren (flashback_scn=xyz / flashback_time=), so dass alle Datensätze innerhalb eines Dumps einen zueinander passenden Stand haben.
Ohne das spezielle Recht DATAPUMP_EXP_FULL_DATABASE kann der exportierende Benutzer allerdings lediglich sein eigenes Schema, respektive Elemente daraus exportieren. Er braucht daher zwingend das Recht, schreibend auf das Export-Verzeichnis (Default: DATA_PUMP_DIR) zuzugreifen. Für einen Import wird das entsprechende Leserecht benötigt. Wird zusätzlich ein Logfile beim Import geschrieben, ist auch das Schreibrecht auf das Import-Verzeichnis erforderlich.
Sofern nun die folgenden Parameter nicht anders gesetzt werden, gelten die hier angegebenen Werte:
directory=DATA_PUMP_DIR
dumpfile=expdat.dmp
logfile=export.log
Beim Anlegen eines DataPump-Exports ist mindestens anzugeben, was exportiert werden soll. In unserem Beispiel ist es das Schema “SCOTT”:
Prompt #> expdp schemas=scott
Es ist ebenfalls möglich, ganze Schemata zu exportieren und gleichzeitig bestimmte, namentlich aufgeführte Objekte oder ganze Objekttypen dabei auszuschließen (alternativ nur spezifische Objekte/Objekttypen exportieren mit include=):
Prompt #> expdp schemas=scott exclude=view,trigger
Prompt #> expdp schemas=scott include=table,constraint
Der DataPump-Import arbeitet ähnlich wie der Export. Er lädt den kompletten Dump, schließt Teile davon aus (exclude=) oder importiert ausschließlich spezifizierte Objekte/Objekttypen (include=). Für den Import von Objekten, die nicht zum eigenen Schema gehören, wird hier das DATAPUMP_IMP_FULL_DATABASE Recht benötigt.
Oracle liefert u.a. für Backups bei allen Datenbank Edition kostenlos das Werkzeug Oracle Recovery Manager (RMAN) mit. Als integriertes Tool ist der RMAN das prädestinierte Werkzeug für die Erstellung von Backups.
Mit Hilfe eines RMAN-Backups kann eine komplette Oracle Datenbank physisch gesichert werden. Es ist aber auch hier möglich, nur Teile der Oracle Datenbank zu sichern, wie einzelne Tablespace(s), Datenfile(s), das Serverparameterfile oder die Controlfile(s).
Mit einem RMAN-Full-Backup der Oracle Datenbank kann die komplette Datenbank zu einem bestimmten Zeitpunkt X wiederhergestellt werden. Ist der ARCHIVELOG MODE in der Oracle Datenbank aktiviert, kann das Backup auch online – also ohne Downtime – durchgeführt werden. Zudem ermöglicht das Backup der Archivelogs, die Oracle Datenbank zu einem beliebigen Zeitpunkt nach dem Anlegen des Full-Backups zu restoren. Voraussetzung dafür ist das Vorhandensein von Archivelogs (oder Backups davon), die nach dem Full Backup angelegt wurden.
Auch hier ist ein Minimum anzugeben, was gesichert werden soll:
RMAN> backup datafile 1;
Daneben gibt es noch eine Vielzahl von Parametern und Kommandos, mit denen die RMAN-Backups verwaltet werden können. Das folgende Kommando legt ein komprimiertes Full Backup inklusive der benötigten Archivelogs an, um die Oracle Datenbank konsistent restoren und recovern zu können:
RMAN> backup as compressed backupset database plus archivelog;
Der wesentliche Unterschied zwischen beiden Sicherungsarten ist, dass der DataPump-Export die Objekte logisch sichert, während mit RMAN die Backups physisch gesichert werden.
So ist es mit DataPump-Export möglich, einzelne Objekte für die Wiederherstellung zu sichern. Hier liegt auch der klare Vorteil einer logischen Sicherung mit DataPump: die Wiederherstellung einzelner Objekte, ohne die komplette Oracle Datenbank restoren zu müssen. Will man beispielsweise nur eine Tabelle rekonstruieren, weil Daten unbeabsichtigt gelöscht wurden, so ist der Aufwand ist an dieser Stelle deutlich geringer als bei einem RMAN-Backup.
Der Vorteil der physischen Sicherung mit einem RMAN-Backup in der Geschwindigkeit der Wiederherstellung wenn alle benötigten Komponenten gesichert wurden.
RMAN:
Data-Pump:
Beispiel – Verlust einer kompletten Oracle Datenbank
Im Falle eines kompletten Daten(bank)verlustes, beispielsweise bei einem defekten Datenträger, ist die Wiederherstellung der Datenbank aus einem RMAN-Backup vergleichsweise einfach. Voraussetzung ist hierbei ist jedoch, dass alle benötigten Komponenten gesichert wurden, d.h. Spfile, Controlfile, Datenfiles und ggf. Archivelogs.
Als Erstes wird dazu das Spfile restored, im Anschluss daran folgt das Controlfile und zum Schluss die Datenbankfiles. Im Falle eines Online-Backups wird, mit Hilfe der gesicherten Archivelogs, abschließend ein Recovery der Datenbank durchgeführt und die Datenbank geöffnet.
Liegt nun aber lediglich ein Dump vor, muss zunächst eine leere Instanz eingerichtet werden. Das kann durchaus einige Zeit in Anspruch nehmen. Anschließend kann erst der Dump eingespielt werden. Hier liegt also auch der wesentliche Unterschied zwischen beiden Sicherungsvarianten, der im Bedarfsfall eine Menge Zeit in der Wiederherstellung kosten kann.
Welche Sicherung verwendet wird, hängt von verschiedenen Faktoren ab. Es empfiehlt sich auf jeden Fall ein RMAN-Full-Backup, um im Desasterfall die Datenbank möglichst ohne viele Eingriffe wiederherstellen zu können. Insbesondere ist eine Wiederherstellung zu einem bestimmten Zeitpunkt nur mit RMAN-Backups, über das Anwenden der Archivelogs, möglich.
Ein DataPump-Export kann optional angelegt werden, wenn immer wieder einzelne Objekte aus diesen Dumps benötigt werden. Das kann hier eine sehr sinnvolle Ergänzung sein, reicht jedoch nach unserer Betrachtungsweise als alleiniges “Backup” nicht aus.
Im Übrigen lässt sich aus einem RMAN-Full-Backup eine Oracle Datenbank auch duplizieren, z. B. für Testzwecke.
Hier findest du weitere interessante Posts zu den Themen Oracle Datenbank oder auch Backup and Recovery aus unserem News und Insights Bereich.
Share this article