News zu Oracle

DataPump-Export/Import vs. RMAN-Backup

Das Thema “Backup” ist eine absolute IT-Grundlage. Unabhängig davon wie hochver­fügbar eine Infrastruktur ausgelegt ist, sollte die Erstellung von Datensicherungen grund­sätzlich kein Gegenstand einer Diskussion sein. Die Ausgestaltung der Backups (Häufigkeit, Ablage, Tests, etc.) unter­liegt natürlich den jewei­ligen 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 ausrei­chende 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.

DataPump-Export/Import

Beim DataPump-Export werden sogenannte Dumpfiles angelegt. Diese beinhalten die logischen Elemente einer Oracle Datenbank. Hierzu zählen beispiels­weise Tabellen, Trigger, Constraints, sowie Metadaten und Steuerinformationen. Für den Export können verschiedene Modi verwendet werden, wie beispielsweise:

  • die komplette Oracle Datenbank (full=yes),
  • einzelne Tablespaces (tablespaces=ts1,ts2,ts3),
  • einzelne Schemata (schemas=s1,s2,s3), oder
  • einzelne Tabellen (tables=t1,t2,t3)

Ein weiterer, spezi­eller Modus ist der “Transportable Tablespace Mode”, welcher aller­dings nur in der Oracle Datenbank Enterprise Edition zur Verfügung steht.

Es ist möglich, die Daten konsistent zu expor­tieren (flashback_scn=xyz / flashback_time=), so dass alle Datensätze innerhalb eines Dumps einen zuein­ander passenden Stand haben.

Ohne das spezielle Recht  DATAPUMP_EXP_FULL_DATABASE  kann der expor­tie­rende Benutzer aller­dings lediglich sein eigenes Schema, respektive Elemente daraus expor­tieren. Er braucht daher zwingend das Recht, schreibend auf das Export-Verzeichnis (Default: DATA_PUMP_DIR) zuzugreifen. Für einen Import wird das entspre­chende 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 angege­benen Werte:

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

Beim Anlegen eines DataPump-Exports ist mindestens anzugeben, was expor­tiert werden soll. In unserem Beispiel ist es das Schema “SCOTT”:

Prompt #> expdp schemas=scott

Es ist ebenfalls möglich, ganze Schemata zu expor­tieren und gleich­zeitig bestimmte, namentlich aufge­führte Objekte oder ganze Objekttypen dabei auszu­schließen (alter­nativ nur spezi­fische Objekte/Objekttypen expor­tieren 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 impor­tiert ausschließlich spezi­fi­zierte 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

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äde­sti­nierte 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 wieder­her­ge­stellt werden. Ist der ARCHIVELOG MODE in der Oracle Datenbank aktiviert, kann das Backup auch online – also ohne Downtime – durch­ge­führt werden. Zudem ermög­licht das Backup der Archivelogs, die Oracle Datenbank zu einem belie­bigen 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 kompri­miertes 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 wesent­liche 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 beispiels­weise nur eine Tabelle rekon­stru­ieren, weil Daten unbeab­sichtigt gelöscht wurden, so ist der Aufwand ist an dieser Stelle deutlich geringer als bei einem RMAN-Backup.

Der Vorteil der physi­schen Sicherung mit einem RMAN-Backup in der Geschwindigkeit der Wiederherstellung wenn alle benötigten Komponenten gesichert wurden. 

RMAN:

  • sichert physisch
  • Sicherung und Wiederherstellung der gesamten Datenbank bzw. ganzer Datenfiles möglich
  • Wiederherstellung einfacher und schneller, wenn alle benötigten Komponenten gesichert wurden

Data-Pump:

  • sichert Objekte logisch
  • Sicherung und Wiederherstellung einzelner Objekte möglich, ohne die komplette Oracle Datenbank restoren zu müssen

Beispiel – Verlust einer kompletten Oracle Datenbank

Im Falle eines kompletten Daten(bank)verlustes, beispiels­weise bei einem defekten Datenträger, ist die Wiederherstellung der Datenbank aus einem RMAN-Backup vergleichs­weise 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 durch­ge­führt und die Datenbank geöffnet.

Liegt nun aber lediglich ein Dump vor, muss zunächst eine leere Instanz einge­richtet werden. Das kann durchaus einige Zeit in Anspruch nehmen. Anschließend kann erst der Dump einge­spielt werden. Hier liegt also auch der wesent­liche Unterschied zwischen beiden Sicherungsvarianten, der im Bedarfsfall eine Menge Zeit in der Wiederherstellung kosten kann.

Fazit

Welche Sicherung verwendet wird, hängt von verschie­denen Faktoren ab. Es empfiehlt sich auf jeden Fall ein RMAN-Full-Backup, um im Desasterfall die Datenbank möglichst ohne viele Eingriffe wieder­her­stellen 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 allei­niges “Backup” nicht aus.

Im Übrigen lässt sich aus einem RMAN-Full-Backup eine Oracle Datenbank auch dupli­zieren, z. B. für Testzwecke.

Hier findest du weitere inter­es­sante Posts zu den Themen Oracle Datenbank  oder auch Backup and Recovery aus unserem News und Insights Bereich.

icon-arrow_right_medium-violet-blue.svg

Share this article

Facebook 
Twitter 
LinkedIn 
XING 
WhatsApp 
Email