single.php
< Beitrag von Benjamin Schneider

Oracle Flashback – ein Tool für DBAs

Welcher Datenbankadministrator kennt es nicht? Ein Entwickler oder Anwender ruft an: „Hilfe, ich habe Daten gelöscht!“ oder „Hilfe, ich habe Daten geändert. Dies war allerdings ein Fehler!“

Nun stellt sich der Datenbankadministrator die Frage: was nun? Restore ich ein Backup, um wieder an die Daten zu kommen? Welche Möglichkeiten habe ich, um die Daten wiederherzustellen?

Für diesen Fall hat Oracle das Feature „Flashback“ entwickelt. Die Anfänge von Oracle Flashback liegen in der Version 9i und wurden bis heute weiterentwickelt und verbessert.

Oracle Flashback – die Technologien

Es gibt verschiedene Arten der Flashback-Technologie. Nachfolgend sollen diese Techniken erklärt werden:

1. Flashback Database

Wenn ein Anwender oder Entwickler Operationen wie Drop User, Drop Tablespace oder ähnliches ausgeführt hat, obwohl dies nicht gewünscht war, muss die gesamte Datenbank zurückgesetzt werden. Um eine gesamte Datenbank zurückzusetzen, sollte die Technik Flashback Database verwendet werden.

Flashback Database ist eine Art Point-In-Time-Recovery. Die Datenbank wird, schneller als bei einem Restore und Recovery, in einen konsistenten Zustand in der Vergangenheit zurückgesetzt, da kein Recovery nötig ist.

Allerdings sollte beachtet werden, dass doppelter Speicherplatz verwendet wird, da die Flashback Logs gesichert werden müssen, um ein Flashback Database durchzuführen.

2. Flashback Table

Ist von einem Entwickler oder Anwender eine Massen-Operation auf einer Tabelle ausgeführt worden und muss diese rückgängig gemacht werden, sollte Flashback Table verwendet werden. Flashback Table kann gesamte Tabellen zu einem bestimmten Zeitpunkt wiederherstellen. Dies kann auch für mehrere Tabellen gleichzeitig passieren. Als Basis kann eine System Change Number oder ein Zeitpunkt angegeben werden. Man kann dies auch mit Flashback Database lösen, jedoch sind bei Flashback Table mehr Seiteneffekte vorhanden.

3. Flashback Query

Wenn Entwickler oder Endanwender Informationen über einen bestimmten Kunden zu einem Zeitpunkt in der Vergangenheit wissen möchten, kann Flashback Query verwendet werden. Somit muss nicht die gesamte Datenbank auf einem anderen Server restored werden. Flashback Query ermöglicht es, eine Abfrage von Daten zu einem früheren Zeitpunkt durchzuführen. Dabei kann allerdings nur eine Version der „alten“ Daten selektiert werden. Ebenfalls möglich ist es, fehlerhafte Daten, die bereits mit Commit festgeschrieben wurden, auf diesem Weg zu korrigieren. Ebenfalls möglich ist ein Vergleich von Daten zu unterschiedlichen Zeitpunkten. Diese Technik kann bei einer Abfrage mit der AS OF-Klausel oder dem Package DBMS_FLASHBACK angesprochen werden.

Bei der AS OF-Klausel wird diese Technologie für ein Statement ausgeführt. DBMS_FLASHBACK gilt für diese eine Session.

4. Flashback Versions Query

Wenn nun allerdings Änderungsverläufe bei einer Tabelle ermittelt werden sollen, bietet sich die Option Flashback Versions Query an. Flashback Versions Query zeigt, im Vergleich zu Flashback Query, die verschiedenen Versionen einer Zeile an. In Pseudospalten wie VERSIONS_OPERATION und VERSIONS_STARTTIME werden Metadaten abgelegt. Diese sind auf diese Weise einfach zu selektieren und mit einfachen Update-Befehlen wiederherzustellen.

Soll das genaue Statement ermittelt werden, welches der Entwickler für die Datenänderung angewendet hat, bietet diese Möglichkeit Flashback Transaction Query. Mit Hilfe dieses Statements kann der Befehl abgesetzt werden, der diese Operation rückgängig macht.

5. Flashback Transaction Query

Flashback Transaction Query kann Änderungen auf Transaktionsebene anzeigen und wiederherstellen. Die Tabelle FLASHBACK_TRANSACTION_QUERY ist dabei wichtig. Die Tabelle zeigt Rowid, Operation, User und das SQL-Statement an, welches ausgeführt wurde.

Ist eine Änderung über mehrere Tabellen durchgeführt worden und diese soll vom Datenbankadministrator wieder rückgängig gemacht werden, kann Flashback Transaction verwendet werden. Flashback Transaction wurde jedoch erst mit Oracle Database 11g eingeführt. Grundlegende Idee von Oracle ist, dass die gesamte Transaktion, inklusive aller Abhängigkeiten, rückgängig gemacht werden kann.

6. Flashback Drop

Sollen gelöschte Objekte der Datenbank zurückgeholt werden, kann wie im Betriebssystem der Papierkorb für die Wiederherstellung verwendet werden. Oracle nennt diese Wiederherstellung Flashback Drop. Flashback Drop nutzt die Option des Recyle Bins. Ab Version Oracle Database 11g ist diese Option per Default auf ON gesetzt. Mit Hilfe von Flashback Drop können gelöschte Tabellen wiederhergestellt werden.

Da die Daten beim Recyle Bin nicht an einen anderen Ort verschoben, sondern lediglich umbenannt werden, ist Flashback Drop nicht von UNDO Retention Zeit abhängig, sondern vom verfügbaren Tablespace. Die Daten werden erst dann gelöscht, wenn der Platz im Tablespace dies erfordert. Sollten die Daten im Recycle Bin zwischenzeitlich überschrieben worden sein, ist ein Restore nur mit Aufwand möglich.

7. Flashback Data Archive

Bei Daten, die revisionssicher gespeichert werden müssen, muss gewährleistet werden, dass jede Änderung nachvollziehbar ist. Um Daten zu einem bestimmten Zeitpunkt zur Verfügung zu stellen, wie es bei Auditings vorkommen kann, ist die Technik Flashback Data Archive möglich. Bei dieser Technik werden über einen definierten Zeitraum, auch über Jahre, Daten aufbewahrt. Dies ist bei Auditings oder Compliance zu gewährleisten.

Übersicht Flashback-Technologien und deren Voraussetzung

Flashback-Technologie Voraussetzung
Flashback Database Archive Log und Flashback Log Mode
Flashback Table automatisches Undo-Management und Table Row Movement
Flashback Query automatisches Undo-Management
Flashback Versions Query automatisches Undo-Management
Flashback Transaction Query automatisches Undo-Management und Supplemental Logging
Flashback Drop Recycle Bin (erst ab Version 11g)
Flashback Data Archive Flashback Archive

Lizenzierung

So nützlich die einzelnen Features von Flashback auch sind, wir dürfen hier das Thema Lizenzierung nicht außer Acht lassen.

Flashback Query, Flashback Versions Query und Flashback Drop stehen in allen Editionen zur Verfügung. In der Enterprise Edition stehen Flashback Table, Flashback Database, Flashback Transaction und Flashback Transaction Query zur Verfügung.

Flashback Data Archive gibt es erst seit Oracle Database 11g und wurde unter Total Recall eingeführt. Seit 2012 ist diese Option Teil der Advanced Compression Option. Die Advanced Compression Option gibt es nur in der Enterprise Edition.

Oracle Flashback – Fazit

Oracle hat mit der Flashback-Technologie ein Werkzeug entwickelt, das dem Datenbankadministrator den Alltag erleichtern kann. Einige Optionen sind dabei sogar kostenfrei enthalten. Andere Optionen hingegen können allerdings nur mit einer zusätzlichen Lizenz implementiert werden.

Damit Flashback ausgeführt werden kann, müssen die Informationen, die zurückgesetzt werden sollen, irgendwo gespeichert werden. Es muss also beachtet werden, dass Flashback Festplattenspeicher benötigt. Aber Festplattenplatz ist heutzutage nicht mehr teuer.

Falls Sie noch Fragen zu diesem Thema haben, stehe ich Ihnen gerne zur Verfügung!

Folgen
X

Folgen

E-mail : *
Kategorie: Oracle-Database | Schlagwörter: , , | Kommentare: 0

Beitrag kommentieren

CAPTCHA * Time limit is exhausted. Please reload CAPTCHA.