Gilt für:
Oracle Database – 11gR2
Problem:
Oftmals ist es bei der Durchführung von Benchmarking-Tests erforderlich, vor dem Start eines neuen Laufs eine saubere Datenbank zu laden. Eine Möglichkeit, eine saubere Datenbank zu gewährleisten, besteht darin, die gesamte Datenbank vor jedem Testlauf neu zu erstellen, aber je nach Größe der Datenbank kann dieser Ansatz sehr zeitaufwändig oder ineffizient sein.
Lösung:
In diesem Artikel wird beschrieben, wie Sie die Flashback-Funktion von Oracle verwenden können, um eine Datenbank schnell wieder in einen Zustand zu versetzen, der kurz vor dem Ausführen der Workloads existierte. Genauer gesagt, beschreibt dieser Artikel Schritte zur Verwendung der "garantierten Wiederherstellungspunkte".
Wiederherstellungspunkt:
Ein Wiederherstellungspunkt ist nichts anderes als ein Name, der einem Zeitstempel oder einer SCN der Datenbank zugeordnet ist. Sie können entweder einen normalen Wiederherstellungspunkt oder einen garantierten Wiederherstellungspunkt erstellen. Der Unterschied zwischen den beiden besteht darin, dass der garantierte Wiederherstellungspunkt es Ihnen ermöglicht, unabhängig vom Initialisierungsparameter DB_FLASHBACK_RETENTION_TARGET zum Wiederherstellungspunkt zurückzukehren, d.h. er ist immer verfügbar (vorausgesetzt, Sie haben genügend Platz im Bereich der Flash-Recovery).
HINWEIS: In diesem Artikel war die Flashback-Protokollierung nicht eingeschaltet.
Garantierter Wiederherstellungspunkt:
Voraussetzungen: Zur Erstellung eines garantierten Wiederherstellungspunktes müssen die folgenden Voraussetzungen erfüllt sein:
- Der Benutzer muss über die SYSDBA-Systemberechtigungen verfügen
- Er muss einen Flash-Recovery-Bereich erstellt haben
- Die Datenbank muss sich im ARCHIVELOG-Modus befinden
Einen garantierten Wiederherstellungspunkt erstellen:
Nachdem Sie eine neue Datenbank erstellt oder migriert haben, müssen Sie zunächst einen garantierten Wiederherstellungspunkt erstellen, damit Sie jedes Mal, bevor Sie einen neuen Workload starten, darauf zurückgreifen können. Die Schritte sind wie folgt:
- $> su – oracle
- $> sqlplus / as sysdba;
- Finden Sie heraus, ob ARCHIVELOG aktiviert ist> SQL
select log_mode from v$database;
Wenn Schritt 3 zeigt, dass ARCHIVELOG nicht aktiviert ist, fahren Sie fort, andernfalls fahren Sie mit Schritt 8 fort.
- SQL> shutdown immediate;
- SQL> startup mount;
- SQL> alter database archivelog;
- SQL> alter database open;
- SQL> create restore point CLEAN_DB guarantee flashback database;
wobei CLEAN_DB der Name des garantierten Wiederherstellungspunkts ist.
Anzeigen des garantierten Wiederherstellungspunkts
SQL> select * from v$restore_point;
Überprüfen Sie die Informationen über den neu erstellten Wiederherstellungspunkt. Notieren Sie außerdem die SCN# als Referenz (mitunter auch als 'Referenz-SCN#' bezeichnet)
Flashback zum garantierten Wiederherstellungspunkt
Um die Datenbank auf den garantierten Wiederherstellungspunkt wiederherzustellen, gehen Sie folgendermaßen vor:
- $> su – oracle
- $> sqlplus / as sysdba;
- SQL> select current_scn from v$database;
- SQL> shutdown immediate;
- SQL> startup mount;
- SQL> select * from v$restore_point;
- SQL> flashback database to restore point CLEAN_DB;
- SQL> alter database open resetlogs;
- SQL> select current_scn from v$database;
Vergleichen Sie die SCN# aus Schritt 9 mit der Referenz-SCN#.
HINWEIS: Die SCN# aus Schritt 9 entspricht möglicherweise nicht genau der Referenz-SCN#, sollte aber ähnlich genug sen.
Referenzen: