News
DBA-Tipp: Data Pump Export/Import vs. RMAN Backup

Die Information ist ein schnelllebiges Gut. Jeden Tag werden wir mit hunderten Informationen zugemüllt. Deshalb sind wir bestrebt uns auf das Wesentliche zu konzentrieren und nur substantiell nachhaltige Informationen bereitzustellen.

Icon Unternehmen

Fragt man Oracle Datenbank Administratoren nach dem Backup ihrer Datenbank, lautet die Antwort nicht selten "wir machen ein Export mit Data Pump". Aber ist ein Data Pump Export wirklich die optimale Backup Strategie? Wir möchten dazu einen kurzen Vergleich zwischen Data Pump Export und RMAN Backup anstellen. Dazu werden im Folgenden die Möglichkeiten beider Varianten angerissen und bewertet.

Data Pump Export/Import

Bei einem Data Pump Export werden sogenannte Dumpfiles angelegt, die logische Elemente der Oracle Datenbank enthalten. Dazu zählen beispielsweise Tabellen, Trigger, Constraints sowie Metadaten und Steuerinformationen. Es können die komplette Oracle Datenbank (full=yes), Tablespaces (tablespaces=ts1,ts2,ts3), einzelne Schemata (schemas=s1,s2,s3) oder Tabellen (tables=t1,t2,t3) exportiert werden. Ein weiterer, spezieller Modus ist der “Transportable Tablespace Mode”.

Es ist möglich, die Daten konsistent zu exportieren (flashback_scn=xyz / flashback_time=<timestamp>), 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 lediglich sein eigenes Schema respektive Elemente daraus exportieren. Er braucht zudem zwingend das Recht, schreibend auf das Export-Verzeichnis (Default: DATA_PUMP_DIR) zuzugreifen. Für einen Import wird das entsprechende Leserecht benötigt. Wird ein Logfile beim Import geschrieben, ist auch das Schreibrecht auf das Import-Verzeichnis erforderlich.

Werden die folgenden Parameter nicht anders gesetzt, gelten die hier angegebenen Werte:

directory=DATA_PUMP_DIR
dumpfile=expdat.dmp
logfile=export.log

Beim Anlegen eines DataPump-Exports ist im Minimum anzugeben, was exportiert werden soll, z.B. 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/Objektypen exportieren mit include=):

Prompt #> expdp schemas=scott exclude=view,trigger
Prompt #> expdp schemas=scott include=table,constraint

Datapump Import arbeitet ähnlich, 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. 

RMAN Backup

Mit Hilfe des RMAN Backups kann die komplette Oracle Datenbank physisch gesichert werden. Möglich ist auch, nur Teile der Oracle Datenbank zu sichern - Tablespace(s), Datenfile(s), das Serverparameterfile oder die Controlfile(s). 

Mit einem  RMAN Full Backup der Oracle Datenbank kann die komplette Datenbank zu einem 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 Fullbackups zu restoren. Voraussetzung dafür ist das Vorhandensein von Archivelogs (oder Backups davon), die nach dem Full Backup angelegt wurden.

Minimal ist 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. 

Folgendes 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;

Vor- und Nachteile

Der wesentliche Unterschied zwischen beiden Sicherungsarten ist, dass der Export die Objekte logisch sichert, während mit RMAN physisch gesichert wird. So ist es mit Export möglich, einzelne Objekte zu sichern respektive sie aus dem Dump wiederherzustellen. Mit RMAN sichert man z.B. ganze Datenfiles oder auch die komplette Oracle Datenbank.

Im Falle eines kompletten Daten(bank)verlustes, beispielsweise bei einem defekten Datenträger, ist die Wiederherstellung der Datenbank aus einem RMAN Backup einfacher. Voraussetzung ist, dass alle benötigten Komponenten gesichert wurden - Spfile, Controlfile, Datenfiles und ggf. Archivelogs. Zunächst wird das Spfile restored, anschließend das Controlfile und danach 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 lediglich ein Dump vor, muss zunächst eine leere Instanz eingerichtet werden, anschließend kann erst der Dump eingespielt werden.

Der Vorteil einer logischen Sicherung ist, dass einzelne Objekte wiederhergestellt werden können, ohne die komplette Oracle Datenbank restoren zu müssen. Der Aufwand ist an dieser Stelle deutlich geringer, um z.B. eine Tabelle zu rekonstruieren, weil Daten unbeabsichtigt gelöscht wurden.

Fazit

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. Ein Datapump-Export kann optional angelegt werden, wenn immer wieder einzelne Objekte aus diesen Dumps benötigt werden.
Im übrigen lässt sich aus einem RMAN Full Backup eine Oracle Datenbank auch duplizieren, z.B. für Testzwecke.