Wenn sich eine ORACLE Instanz nach einem abgebrochenen Recovery oder Flashback nicht mehr in den Open-Status hochfahren lässt und stattdessen mit einem ORA-600 Fehler abstürzt, ist guter Rat teuer. Stellen sie sich jetzt noch vor, dass kein vollständiges Backup der Datenbank als Fallback vorhanden ist, so dass die Situation ausweglos erscheint.
Der Albtraum eines Datenbankadministrators ist wahr geworden, der Super-GAU, eine Datenbank kann nicht mehr zum Lesen geöffnet werden. Sind die Daten in der ORACLE-Datenbank jetzt unwiederbringlich verloren? Sie versuchen in diesem Moment alles, um auf die Daten zugreifen zu können; auch der Hidden Parameter „_allow_resetlogs_corruption" bringt leider keine Lösung.
Gibt es eine Software, die ORACLE Datenbanken oder ASM-Dateien lesen und die enthaltenen Daten und Objekte exportieren kann, ohne Zugriff „über die laufende Instanz" zu haben? Was wären Sie bereit für diese Software zu bezahlen? Sie müssen sich in diesem Moment die Frage stellen, was Ihnen Ihre Daten wert sind. Denn eines ist klar, eine Software, die einen in dieser Situation retten kann, wird es nicht zum Null-Tarif geben.
PRM-DUL 5.1
In diesem Blog-Beitrag werde ich die Software PRM-DUL 5.1 vorstellen. Es handelt sich um ein Java-Programm, das betriebssystemunabhängig ausgeführt werden kann. Eine freie Testversion, die natürlich mit einigen Einschränkungen versehen ist, kann kostenlos unter https://www.parnassusdata.com/en runtergeladen werden.
Sie erhalten eine 7 MB große Zip-Datei. Das enthalte Java Programm ist also nicht sehr groß, kann aber erstaunliches leisten. Für die Ausführung wird mindestens ein Java JDK in der Version 1.8 benötigt.
Wir gehen davon aus, dass die Dateien des defekten System-Tablespace und weiterer Daten-Tablespaces vorhanden sind. Wir kopieren diese Dateien auf einen Server, auf dem das Java Programm ausgeführt werden kann. Es muss sich hierbei nicht um die gleiche Plattform handeln, auf der die Datenbank ausgeführt wurde. Es können so z.B. AIX Dateien auch unter Linux oder Windows ausgelesen werden.
Nach dem Start des Java Programms zeigt sich eine Oberfläche mit zwei Spalten. Auf der linken Seite werden die analysierten Datenbankdateien aufgelistet. Das Tool PRM-DUL führt keine schreibenden Zugriffe auf die analysierten Dateien durch, sodass auch von einem READONLY Filesystem (DVD) gelesen werden kann.
Wir starten den Recovery Wizard aus dem Menü Tools. Da der System-Tablespace mit den Data-Dictionary-Informationen noch vorhanden ist, können wir den „Dictionary Mode" auswählen.
Im nächsten Schritt muss die Endian-Byte-Sortierung der Dateien ausgewählt werden. Stammen die Dateien von einem AIX-System, handelt es sich z.B. um eine Big Endian-Byte-Sortierung. Alle weiteren Informationen werden aus dem System-Tablespace automatisch ausgelesen. Es werden die ORACLE Versionen 9i bis 12c unterschützt und erkannt.
Im letzten Schritt vor der Analyse werden die Datenbankdateien und der Pfad angegeben. Hier können alle zugehörigen Datenbankdateien angegeben werden. Controlfile und Redologs, sowie Temp-Tablespaces, Undo-Tablespaces und Archivelogs werden für die Analyse nicht benötigt.
Mit dem Button „load" wird der Prozess zum Auslesen der Dateien gestartet. In diesem Schritt entscheidet sich, ob und welche Daten aus der betroffenen Datenbank wiederhergestellt werden können oder nicht.
Die einzelnen Analyseschritte werden in einem Fenster aufgelistet und können anschließend in einer Log-Datei ausgewertet werden. Die Dateien stammen in diesem Fall von einer ORACLE 11 Express Edition.
Das Ergebnis der hoffentlich erfolgreichen Datenbankanalyse wird nun dargestellt. Die User und deren Tabellen werden in der linken Spalte in einer Baumstruktur und die zugehörigen Daten in der rechten Spalte aufgelistet. In der freien Version werden allerdings nur die ersten 10.000 Zeilen je Tabelle ausgelesen. Fast alle ORACLE Datentypen werden unterstützt und können ausgelesen werden. Eine detaillierte Beschreibung der unterstützten Datentypen und Tabellentypen sowie der unterstützen Zeichensätze kann in einem PDF-Dokument auf der Homepage des Herstellers nachgelesen werden. Die ursprüngliche Berechtigungsstruktur innerhalb der Instanz geht bei der Analyse verloren. Es werden alle Daten ausgelesen, wenn es sich nicht um einen verschlüsselten Tablespace handelt. Die Passwörter der Datenbankschema werden für das Auslesen der Daten nicht benötigt.
Jetzt besteht die Möglichkeit, die ausgelesenen Daten je Schema in eine bestehende hochgefahrene Datenbank via jdbc Connection (Data Bridge) zu übertragen. Hierfür muss ein User mit DBA-Berechtigungen und ein Tablespace in der Ziel Datenbank ausgewählt werden.
Weiterhin können die DDL Statements für alle weiteren Datenbankobjekte generiert werden. Diese Funktion ist in der freien Testversion leider nicht aktiviert.
Welche weiteren Einsatzmöglichkeiten für dieses Tool gibt es?
Mit dem Tool können auch irrtümlich gelöschte Tabellen wiederhergestellt werden. Wenn der System-Tablespace nicht ausgelesen werden kann, stehen die Tabellen und Objektnamen nicht mehr zur Verfügung. Auch BLOB-Datentypen werden erfolgreich ausgelesen und in die ziel Instanz exportiert.
Beim Exportieren der Daten in eine Textdatei oder in die Zieldatenbank wird ein ausführliches Protokoll erstellt. Hier wird für jede exportierte Tabelle die Anzahl der exportieren Rows dokumentiert.
object information user#:75 object_name: CONFIG_CUSTOMER object_id:58195 data_object_id:58195 object_type:2
table information object_id:58195 data_object_id:58195 ts#:24 rfile#:24 block#:466 rowcnt:5 blkcnt:5 analyzetime:2019-01-15 21:00:07.0
object information user#:75 object_name: CONFIG_CUSTOMER object_id:58195 data_object_id:58195 object_type:2
table information object_id:58195 data_object_id:58195 ts#:24 rfile#:24 block#:466 rowcnt:5 blkcnt:5 analyzetime:2019-01-15 21:00:07.0
TABLE ADM.CONFIG_CUSTOMER 5 rows unloaded
Totally inserted rows:5
Elapsed time(seconds):0.0
Übersicht der Funktionen
- Java GUI Applikation, einfach zu bedienen
- Arbeitet mit AIX, Solaris, HP-UX, Linux und Windows
- Hochperformant bei der Analyse und beim Export
- Unterstützt die meisten Datentypen, dieses beinhaltet BLOB, CLOB, NCLOB
- Unterstützt ASM Storage
- Optimiert für Table Recovery von gelöschten Tabellen
- Unterstützt Oracle 11g new LOB Structure: Securefile LOB
- Unterstützt Oracle 12c Pluggable Database CDB/PDB
Einschränkungen:
- Securefile lob mit Verschlüsselung oder Komprimierung
- Label Security
- Verschüsselung
- Cell ASM Disk on Exadata
Lizenzierung des Tools
Für einen produktiven Einsatz dieses Tools muss ein Lizenz-Key erworben werden. Dieser ist dann für eine bestimmte Datenbank gültig. Der gültige Lizenz-Key wird über den DB_Namen, welcher im Header der Datenbankdateien ermittelt wird, verifiziert. Für den Einsatz je Datenbank werden 1.500 Dollar also ca, 1.344 Euro berechnet. Das Datenvolumen ist in der lizenzierten Version natürlich nicht begrenzt.
Die Kosten für den Einsatz von PRM-DUL sind im Verhältnis zu den entstehenden Kosten eines totalen Datenverlustes und zu den ORACLE Lizenzgebühren absolut gerechtfertigt.
Wenn gleich mehrere Datenbanken von dem Defekt betroffen sind, z.B. durch einen Platten-Crash, werden die Kosten mit der Anzahl der Datenbanken multipliziert.
Es empfiehlt sich allerdings vor dem Kauf einer Lizenz für eine Datenbank mit der freien Version des Tools einen Probe-Export durchzuführen, um zu sehen wie groß die Chance auf Datenrettung ist.
An dieser Stelle sei noch auf das Produkt ORACLE ODU hingewiesen, welches ein ähnliches Einsatzgebiet hat.