Auswahl  

 

Oracle
DBA
12.1, 12.2
DBA , Backup & Recovery , SQL
12.12.18
MP
12.12.18
MP

Body

Über das FLASHBACK-Konzept und seine Anwendung haben wir Sie bereits in früheren Tipps ausführlich informiert. Hier und jetzt soll Ihnen noch eine weitere Möglichkeit vorgestellt werden, die bislang noch gar nicht erwähnt wurde und ab Version 10.2 verfügbar ist: RESTORE POINTS.

Basierend auf der SAVEPOINT-Funktionalität haben Sie nun die Möglichkeit für einzelne Tabellen oder für die gesamte Datenbank die Uhr zurückzustellen. Durch das Erzeugen eines Restore Points definiert man sich einen (Zeit-)Punkt („Bookmark“), auf den - auch nach einem COMMIT oder einem Neustart der Instanz - zurückgesetzt werden kann, um damit fehlerhafte Anweisungen zurückzurollen. Dies bietet sich an z.B. vor dem Einspielen von Upgrade- oder umfangreichen Batch-Skripten.

Restore Points werden unter ihrem Namen in den Controldateien in Verbindung mit einer bestimmten Zeit bzw. SCN abgespeichert. Beim Zurücksetzen einer Tabelle oder der Datenbank dient der Name des Restore Points als Aufsatzpunkt. Es werden zwei Arten von Restore Points unterschieden:

 

1) Normale Restore Points

Der SPFILE-Parameter db_flashback_retention_target gibt an, wie weit die Datenbank zurückgesetzt werden kann. Wenn die maximale Anzahl (2048) an Restore Points erreicht worden ist, wird der älteste automatisch gelöscht. Ein FLASHBACK DATABASE … TO RESTORE POINT-Kommando ist nur bei aktiviertem FLASHBACK-Feature zulässig.

 

2) Garantierte Restore Points

Garantierte Restore Points sind unabhängig vom Parameter db_flashback_retention_target und müssen manuell gelöscht werden. Ein FLASHBACK DATABASE … TO RESTORE POINT-Kommando ist auch ohne eingeschaltetem FLASHBACK-Feature möglich.

 

Voraussetzungen für das Anlegen von Restore Points

Der Benutzer muss über notwendige Systemprivilegien verfügen:

GRANT SELECT ANY DICTIONARY TO <user>;
-- oder
GRANT FLASHBACK ANY TABLE TO <user>;
 

Für das Erzeugen von garantierten Restore Points ist die SYSDBA-Rolle notwendig und die Archivierung muss laufen. Falls FLASHBACK nicht aktiviert wurde, muss der erste garantierte Restore Point in der MOUNT-Phase erzeugt werden. Darüber hinaus muss die Flash Recovery Area eingerichtet worden sein.

Damit einzelne Tabellen über FLASHBACK TABLE zurückgesetzt werden können, muss das Feature ROW MOVEMENT aktiviert worden sein:

ALTER TABLE <tab> ENABLE ROW MOVEMENT;
 

Anlegen von Restore Points

CREATE RESTORE POINT res_point01 GUARANTEE FLASHBACK DATABASE;
CREATE RESTORE POINT res_point02;
 

Übersicht über Restore Points im Data Dictionary

SELECT * FROM v$restore_point;

 

   SCN … GUA STORAGE_SIZE TIME                        NAME
------ … --- ------------ --------------------------- -----------
402019   YES      3981312 22.05.18 12:44:04,000000000 RES_POINT01
402240   NO             0 22.05.18 12:46:42,000000000 RES_POINT02
 

Zurücksetzen auf den definierten Restore Point

FLASHBACK TABLE <tab> TO RESTORE POINT res_point02;
 

Das Zurücksetzen der gesamten Datenbank ist in der MOUNT-Phase mit anschließendem OPEN RESETLOGS durchzuführen:

SHUTDOWN IMMEDIATE
STARTUP MOUNT
FLASHBACK DATABASE TO RESTORE POINT res_point01;
ALTER DATABASE OPEN RESETLOGS;
 

Löschen von Restore Points

DROP RESTORE POINT res_point01;
DROP RESTORE POINT res_point02;