FLASHBACK - Muniqsoft

Werbung
Oracle Flashback
DOAG Konferenz
K f
Nürnberg
Nü b
2009
Marco Patzwahl
MuniQSoft GmbH
Gegründet 1998
Tätigkeitsbereiche:
Oracle IT Consulting & Services
Oracle Schulungen (SQL, PL/SQL, DBA, APEX, B&R, …)
Software-Lösungen
Oracle Lizenzen
MuniQSoft GmbH
Grünwalder Weg 13 a
D 82008 Unterhaching
D-82008
www.muniqsoft.de
+49 89 6228 6789-0
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 2 / 46
Was ist Flashback ?
Was sagt Wikipedia zum Thema Flashback?
ein Wiedererleben früherer Gefühlszustände, siehe
Flashback (Psychopathologie)
( y
p
g )
einen Begriff aus der Filmsprache, siehe Rückblende
eine geschützte Marke eines großen deutschen
Paraphernalien- und Großbedarfversandhandelsunternehmens gleichen Namens
eine Technik in der Datenbank Oracle, die eine
Rückblende des Datenbestandes erlaubt, mit dem Namen
Oracle Flashback,, siehe Oracle (Datenbanksystem)
(
y
)
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 3 / 46
Flashback Einführung
Flashback ermöglicht dem DBA u
u.a.:
a:
Transaktionen auf einen zurückliegenden Stand zu
setzen
Gelöschte (nur mittels DROP) Tabellen wieder ins Leben
zurück zu holen
Vergangene Transaktionen zu auditieren
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 4 / 46
Die Legende vom Flashback
Flashback ist erst seit Version 10g verfügbar
Falsch, bereits seit Version 9.2.0.4 konnte man den
historischen Stand einer Tabelle ansehen
Meine EE DB läuft nicht im Flashback Modus, also kann
ich Flashback nicht nutzen
Falsch, u.a. Flashback Transaction Query oder Flashback
to Before Drop sind verfügbar
Tabellen die gedropt wurden, werden in einen
abgetrennten Bereich des Tablespace verschoben
Falsch, Tabellen bleiben da liegen, wo sie vorher auch
abgelegt waren
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 5 / 46
Die Legende vom Flashback
Flashback Daten werden in der Flash Recovery Area abgelegt?
Falsch, nur Flashback Logs, die für Flashback Database
notwendig sind, liegen in der FRA
Ich habe meinen Parameter undo_retention auf 90 Sekunden
gesetzt, also kann ich immer 15 Minuten zurückgehen?
Falsch, es kann weniger Zeit zur Verfügung stehen, wenn der
Undo-Tablespace (auf RETENTION NOGUARANTEE steht)
keinen Speicherplatz
p
p
mehr hat und neue Transaktionen
kommen
Es kann auch mehr als 15 Min zur Verfügung stehen, wenn
auf der Datenbank wenig Änderungen passieren und der
Undo-Tablespace nicht ausgelastet ist.
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 6 / 46
Flashback Übersicht
FLASHBACK TRANSACTION QUERY
(ab 9i)
FLASHBACK BEFORE DROP (ab 10g)
FLASHBACK TABLE (* ab 10g)
FLASHBACK
S
C DATABASE
S ((* ab 10g)
0g)
FLASHBACK TRANSACTION
BACKOUT (ab 11g)
FLASHRECOVERY AREA (ab 10g)
FLASHBACK DATA ARCHIV ((* Option
p
ab 11g)
g)
* Nur in der Enterprise Edition (EE) verfügbar
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 7 / 46
FLASHBACK TRANSACTION QUERY
Wie funktioniert es?
Transaktionsänderungsdaten die durch Insert, Update,
Delete oder Merge entstehen, müssen bis zum Ende der
Transaction in den Undo-Segmenten gespeichert bleiben
Ab Version 9.2 kann die Speicherdauer über den COMMIT
hi
hinaus
durch
d
h den
d init.ora
i it
Parameter
P
t undo_retention
d
t ti
verlängert werden
Default= 900 (DB) 1800 (DBCA) Sekunden = 15/30
Minuten
Ab 10.2 wird empfohlen,
p
, den Parameter leer zu lassen,,
Oracle wählt dann automatisch den besten Wert
(Außnahme: Undo-Tablespace wurde auf RETENTION
GUARANTEE gesetzt)
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 8 / 46
FLASHBACK TRANSACTION QUERY
Zustand einer Tabelle basierend auf einer alten SCN:
SELECT * FROM scott.emp
AS OF SCN 3765431;
Zweite Möglichkeit mittels absoluter Uhrzeit
SELECT * FROM scott.emp
AS OF TIMESTAMP to_timestamp('10.11.2009
p(
10:59:59','DD.MM.YYYY HH24:MI:SS');
Dritte Möglichkeit mittels relativer Uhrzeit (vor 2 Minuten)
SELECT * FROM scott.emp
AS OF TIMESTAMP (SYSTIMESTAMP – 2/(24*60));
Hinweis:
Die Commit-Zeit entscheidet über die Flashback Zeit
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 9 / 46
Referentielle Integrität
Folgende Transaktionen sind (fehlerhaft) passiert:
DELETE FROM scott.emp WHERE deptno=10;
DELETE FROM scott.dept
p WHERE deptno=10;
p
;
COMMIT;
Fehler erkannt, Flashback erwünscht…
ALTER TABLE scott.emp ENABLE ROW MOVEMENT;
ALTER TABLE scott.dept
p ENABLE ROW MOVEMENT;
FLASHBACK TABLE scott.emp
TO TIMESTAMP (sysdate-1/24);
ORA-02291: Integritäts-Constraint (SCOTT.FK_DEPTNO)
verletzt - übergeordneter Schlüssel nicht gefunden
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 10 / 46
Referentielle Integrität (f)
Lösung 1: (Beide Tabellen werden zurückgesetzt):
FLASHBACK TABLE scott.emp, scott.dept
TO TIMESTAMP (sysdate-1/24);
y
Lösung 2: (DB wird komplett zurückgesetzt)
…
FLASHBACK DATABASE
TO TIMESTAMP (sysdate-1/24);
…
Lösung 3: (Komplette Transaktion wird über
Transaktionsnummer zurückgesetzt)
Siehe: Flashback Transaction Backout (ab 11g)
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 11 / 46
Flashback rückgängig machen
Ein Rollback nach einem Flashback ist wirkungslos
Jedoch kann man sich mit folgendem Trick behelfen:
CREATE RESTORE POINT flash1;
ALTER TABLE scott.flash_back ENABLE ROW
MOVEMENT;
FLASHBACK TABLE scott.flash_back TO TIMESTAMP
TO_TIMESTAMP(
10.11.09 16:32:55','DD.MM.YY
16:32:55 , DD.MM.YY HH24:MI:SS');
HH24:MI:SS );
'10.11.09
--OOOPPS Falscher Zeitpunkt
FLASHBACK TABLE scott.flash
scott.flash_back
back
TO RESTORE POINT FLASH1;
DROP RESTORE POINT flash1;
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 12 / 46
FLASHBACK bei Securefiles (Lob)
Da Lob Spalten sehr große Datenmengen speichern
können, sind hier eigene Einstellungen auf Spaltenebene
für ein Flashback notwendig:
RETENTION
(Versionskontrolle für Lobs mit folgenden Parametern):
Max (Speicher wird erst freigegeben, wenn MAXSIZE
erreicht)
Min (Alte Versionen des Lobs werden solange aufbewahrt,
wie als Zeitspanne (in Sekunden) angegeben
Auto (Default) Die Datenbank bestimmt selbst die ideale
R t ti Z
Retention
Zeit
it
None (Datenbank überschreibt alte Versionen so schnell
g
)
wie möglich)
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 13 / 46
FLASHBACK bei Securefiles
Beispiel für Retention bei Securefiles
CREATE TABLE tab_lob
(id NUMBER, c CLOB)
lob (c) STORE AS SECUREFILE sfsegname
(TABLESPACE lob_tbs
RETENTION AUTO
/*MAXSIZE 32G*/
/*MIN 3600 */
CACHE
LOGGING
STORAGE (MAXEXTENTS 128) );
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 14 / 46
FLASHBACK TRANSACTION QUERY
Einschränkungen
Nach einem Neustart der Datenbank stehen die Daten
nicht mehr zur Verfügung
Es dürfen keine Spaltendatentypen verändert oder die
Spalte gedropt worden sein
Nach einem Drop/Truncate oder Purge ist eine
Flashback Transaction Query nicht mehr möglich
Es dürfen keine Subqueries in der AS OF Klausel
verwendet werden
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 15 / 46
SCN (System Change Number)
Die SCN zeichnet den Zeitpunkt einer Transaktion in
Form einer Zahl auf
Diese kann über eine Mapping
Mapping-Tabelle
Tabelle wieder in eine
Uhrzeit umgerechnet werden (Differenz beträgt jedoch
bis zu +/-3 Sekunden)
SELECT scn_to_timestamp(<scn>) FROM dual;
Umgekehrt
g
kann eine Zeit in eine SCN umgerechnet
g
werden:
SELECT timestamp_to_scn('<zeit>') FROM dual;
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 16 / 46
Wie erhält man die aktuelle SCN?
In Version 9i
SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER
FROM dual;
GET_SYSTEM_CHANGE_NUMBER
-----------------------1366025
Ab Version 10g:
SELECT current_scn FROM v$database;
CURRENT_SCN
----------1365964
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 17 / 46
FLASHBACK ROW HISTORY
Die Historie der letzten DML-Befehle auf einer Tabelle
kann seit Version 10g betrachtet werden:
Folgende Pseudospalten stehen dafür in jeder Tabelle
zur Verfügung:
VERSIONS_XID
Transaktionsnummer
VERSIONS_STARTTIME Startzeit beim Erzeugen der ersten
Version
VERSIONS_STARTSCN Start SCN der ersten Version
VERSIONS_ENDSCN
End SCN der letzten Version
VERSIONS OPERATION U = Update,
VERSIONS_OPERATION
U d t I = IInsert,
t D=D
Delete
l t
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 18 / 46
FLASHBACK ROW HISTORY
SELECT versions_xid XID,
, versions_startscn START_SCN,
,
versions_endscn END_SCN, versions_operation OP,
empno,ename, sal
FROM scott.emp
p
VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE
WHERE empno = 7934;
XID
START SCN
START_SCN
END_SCN
END SCN OPERATION
--------------- --------- ------- ---------
ENAME
SAL
------ -----
0004000700000058 115855
I
King1
5000
000200030000002D 115564
D
King1
5000
I
King2
g
4000
000200030000002E 114670
113564
Hinweis: init.ora Parameter undo_retention muss > 0 gesetzt sein
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 19 / 46
Welche Transaktion ist passiert
Wenn die Transaktionsnummer bekannt ist,, kann auch die
zugehörige UNDO oder REDO Transaktion ermittelt werden:
SELECT UNDO_SQL
QUERY
FROM FLASHBACK_TRANSACTION_Q
WHERE XID = hextoraw('03001200DD070000');
UNDO_SQL
insert into
"SCOTT"."EMP"("EMPNO","ENAME","JOB","MGR","HIR
EDATE","SAL","COMM","DEPTNO") values
('9'
(
9 ,'Marc'
Marc ,'CLERK'
CLERK ,NULL,NULL,NULL,NULL,NULL);
NULL NULL NULL NULL NULL);
insert into
"SCOTT"."EMP"("EMPNO","ENAME","JOB","MGR","HIR
EDATE","SAL"
EDATE
SAL ,"COMM"
COMM ,"DEPTNO")
DEPTNO ) values
('9001','Marco',NULL,NULL,NULL,'1',NULL,NULL);
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 20 / 46
FLASHBACK DROP
Wie funktioniert es?
Ab Version 10g führt ein DROP nur zum Umbenennen der
Tabelle in BIN$*********
Solange noch Platz im Tablespace ist, bleibt die gelöschte
Tabelle am gleichen Platz stehen
Sollte der Platz im Tablespace für die Erweiterungen von
anderen Objekten nicht mehr ausreichen, wird das Objekt
endgültig gelöscht
Sie können die Tabelle mit dem Befehl Purge auch bereits
vorzeitig
g endgültig
g
g löschen
PURGE TABLE scott.emp;
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 21 / 46
FLASHBACK DROP
Solange noch Platz im Tablespace ist,
ist werden gelöschte
Objekte aufbewahrt
T bl
Tablespace
USERS
T bl
Tablespace
USERS
T bl
Tablespace
USERS
T bl
Tablespace
USERS
EMP_NEU
EMP_NEU
Emp Tabelle
BIN$ZT5R6%4fG
BIN$ZT5R%4fG
DROP TABLE emp;
MuniQSoft GmbH
DOAG 2009 Flashback
Zeit
Seite 22 / 46
FLASHBACK DROP Beispiel
Es kann der "alte"
alte Tabellenname oder der von Oracle
vergebene Name, wenn das Objekt gelöscht worden ist,
verwendet werden.
Beispiel:
FLASHBACK TABLE scott.emp
TO BEFORE DROP;
Wenn der Tabellenname inzwischen schon wieder von
einem anderen Objekt verwendet wird:
FLASHBACK TABLE scott.emp
TO BEFORE DROP
RENAME TO emp
emp_old;
old;
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 23 / 46
FLASHBACK DROP DD "Fehler"/Features
Verwaltungsview mit BIN$ Objekten
10.2.0.4 11.1.0.7
11.2.0.1
ALL / DBA
ALL_/
DBA_TABLES
TABLES
Nein
Nein
Nein
ALL_/DBA_TAB_COLUMNS
Ja
Nein
Nein/Ja
ALL_/ DBA_CATALOG
Ja
Ja
Ja
ALL_/ DBA_TAB_STATISTICS
Ja
Ja
Ja
DBA_OBJ_AUDIT_OPTS (Audits erstellbar)
Ja
Ja
Ja
ALL_/DBA_TAB_COMMENTS (Kommentare möglich) Ja
Nein/Ja
Nein/Ja
TABLE_PRIVILEGES (Rechte vergebbar)
Ja
Ja
Ja
ALL /DBA INDEXES
ALL_/DBA_INDEXES
Nein
Nein
Nein
ALL_/DBA_IND_COLUMNS
Ja
Ja
Ja
Hinweis: Die Klausel: and bitand(obj$.flags,128)=0
blendet BIN$ Objekte aus der Darstellung aus
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 24 / 46
Restore Points
Ein Restore Point ist ein definierter Punkt (vergleichbar
einem Savepoint), auf den auch nach einem Commit
zurückgesetzt werden kann.
Restore Points setzen:
Name des Restore Points wird mit der SCN abgespeichert.
Maximal 2048 Restore Points
Man unterscheidet zwei Typen von Restore Points:
Guaranteed Restore Points
Normal Restore Points
Infos zu bestehenden Restore Points stehen in
V$RESTORE_POINT
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 25 / 46
Restore Points
Guaranteed Restore Points:
DB kann unabhängig vom INIT.ORA-Parameter
db_flashback_retention_target auf den gewünschten
P kt zurückgesetzt
Punkt
ü k
t t werden.
d
Flashback Logs werden immer bis zum frühesten Restore
Point aufbewahrt.
Jedoch ist keine Garantie vorhanden, dass jede Tabelle
mittels FLASHBACK auf den gleichen Punkt zurückgesetzt
wird.
wird
Die Restore Points müssen Sie wie folgt löschen:
DROP RESTORE POINT <rest
<rest_point>;
point>;
Notwendige Rechte: SYSDBA
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 26 / 46
Restore Points
Normale Restore Points
Unterstützt werden nur Restore Points, die im Intervall von
db_flashback_retention_target
_
_
_ g liegen.
g
Informationen über Restore Points bleiben im Controlfile
(2000 Stück haben Platz) bis die Zeitspanne
control_file_record_keep_time
l fil
d k
i
überschritten
üb
hi
wurde.
d
Die ältesten Restore Points werden automatisch gelöscht.
Notwendige Rechte:
SELECT ANY DICTIONARY
FLASHBACK TABLE
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 27 / 46
Restore Points
Syntax zum Setzen:
CREATE RESTORE POINT restore_point
[ GUARANTEE FLASHBACK DATABASE ];
Beispiel:
CREATE RESTORE POINT hier_wars_noch_ok;
UPDATE emp set sal=sal-1000;
COMMIT;
FLASHBACK TABLE scott.emp TO RESTORE POINT
hier_wars_noch_ok;
Löschen der Restore Points:
DROP RESTORE POINT restore_point;
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 28 / 46
FLASHBACK TABLE
Wie funktioniert es? => Alle Transactionen
Transactionen, die im
angegebenen vergangenen Zeitraum durchgeführt
wurden, werden durch ihre inverse Transaction
"neutralisiert"
Zeile durch Insert eingefügt => Zeile wird durch Delete
gelöscht
Zeile durch Delete gelöscht => Insert der Zeile
Zeile
Z
il durch
d
h Update
U d t geändert
ä d t => Alten
Alt Wert
W t mittels
itt l Update
U d t
zurücksetzen
Hinweis: Dadurch kann sich die ROWID der betroffenen
Zeilen ändern!
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 29 / 46
Voraussetzungen für FLASHBACK TABLE
Die Tabelle muss das Feature ROW MOVEMENT aktiviert
haben:
ALTER TABLE [schema.]table
[
]
ENABLE ROW MOVEMENT;
Objekte
j
des Benutzers SYS sind ausgeschlossen
g
Tablespace muss vom Typ Locally Managed sein
UNDO-Tablespace
UNDO
Tablespace hatte noch Platz und
undo_retention>0
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 30 / 46
Rechtliche Voraussetzungen
Welche Rechte müssen Sie für einen Flashback Table
besitzen?
FLASHBACK Objekt Privileg auf der Tabelle
oder
FLASHBACK ANY TABLE
SELECT, INSERT, DELETE, und ALTER Recht auf der
Tabelle
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 31 / 46
FLASHBACK TABLE Hinweise
Achtung: Ein Flashback lässt keinen Rollback zu.
zu
Vor dem Absetzen sollte die aktuelle SCN notiert werden,
damit man im Notfall auf diese zurücksetzen kann
kann.
Achten Sie auf Relationen zu anderen Tabellen. Ein
Zurückspielen einer Tabelle kann ein Chaos erzeugen.
Hier müssen dann alle zusammenhängenden Tabellen
zurückgesetzt werden.
Tabellen werden während des Flashbacks gesperrt!
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 32 / 46
FLASHBACK TABLE Hinweise
Folgende Objekte werden mit berücksichtigt
(behalten aber den Namen aus dem Recyclebin):
Indizes
Es werden keine Indizes gedropt oder erzeugt
Nach der Flashback-Zeit gelöschte Indizes sind weiterhin
weg
Nach der Flashback-Zeit erzeugte Indizes sind trotzdem da
Constraints
Foreign Key Constraints werden Deferred überprüft
Trigger sind standardmäßig ausgeschalten, können aber
eingeschalten werden mittels:
FLASHBACK TABLE … ENABLE TRIGGERS
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 33 / 46
Index/Constraint Namen
Nach einem Flashback Table behalten die
Constraints/Indizes die Namen aus dem Mülleimer
DROP TABLE scott.emp;
p;
SELECT 'ALTER INDEX
'||owner||'."'||object_name||'" RENAME TO
"'||original_name||'";'
FROM dba_recyclebin
WHERE type='INDEX' AND droptime IN (
SELECT droptime FROM dba_recyclebin WHERE
owner='SCOTT' AND original_name='EMP')
FLASHBACK TABLE scott.emp
tt
TO BEFORE DROP
DROP;
=> ALTER INDEX ..RENAME laufen lassen
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 34 / 46
Flashback Table Ausnahmen
Folgende Operationen legen keine Objekte in Recyclebin
ab und ermöglichen kein Flashback Table mehr:
DROP TABLESPACE
DROP USER
DROP CLUSTER
DROP TYPE
TRUNCATE TABLE (nicht in Doku erwähnt)
PURGE TABLE (nicht in Doku erwähnt)
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 35 / 46
Flashback Table Ausnahmen
Nach Absetzen der folgenden Befehle ist kein Flashback
auf das betreffende Objekt mehr möglich
ALTER TABLE … MOVE
ALTER TABLE … ADD CONSTRAINT
ALTER TABLE … ADD/DROP COLUMN
Partitionsoperationen (bis auf ADD Range-Partition)
AQ und MV Tabellen
Di ti
Dictionary
Tabellen
T b ll
Remote-, Object-, Cluster und Object Tabellen
Partitionen oder Sub-Partitionen
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 36 / 46
FLASHBACK TABLE Syntax
Syntax:
FLASHBACK TABLE
[schema.]table [, [schema.]table ]...
TO { { SCN | TIMESTAMP } expr
|RESTORE POINT <rest_point> /*ab 10.2*/
[ { ENABLE | DISABLE } TRIGGERS ]
| BEFORE DROP [ RENAME TO table ]} ;
Die Klausel RENAME TO wird verwendet, wenn bereits
wieder eine Tabelle mit diesem Namen existiert
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 37 / 46
FLASHBACK TABLE Beispiele
Zurücksetzen auf SCN 1234567
FLASHBACK TABLE scott.emp TO SCN 1234567;
Z ü k t
Zurücksetzen
auff den
d 17.11.09
17 11 09 10 Uh
Uhr 59 und
d 51 S
Sek.
k
FLASHBACK TABLE scott.emp TO TIMESTAMP
to timestamp ('17
to_timestamp
( 17.11.2009
11 2009 10:59:51'
10:59:51 ,
'DD.MM.YYYY HH24:MI:SS');
Um 2 Minuten zurücksetzen
FLASHBACK TABLE scott.emp TO
TIMESTAMP (SYSTIMESTAMP – 2/(24*60));
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 38 / 46
Flashback für Datenbank einschalten
FLASHBACK DATABASE:
Bietet eine schnelle Möglichkeit, ein unvollständiges
Datenbank Recovery durchzuführen.
Ab 10.2 kann auch vor den letzten Resetlogs-Stand
zurückgesetzt werden.
Beim
B
i Absetzen
Ab t
des
d Befehls
B f hl wird
i d zuerstt überprüft,
üb
üft ob
b alle
ll
notwendigen archivierten und online Redologdateien
verfügbar sind.
Neue View: v$flashback_database_log
Hinweis:
Ein sessionweites Zurücksetzen von Transaktionen wird
derzeit nicht unterstützt
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 39 / 46
FLASHBACK DATABASE
Syntax:
FLASHBACK [ STANDBY ] DATABASE [ database ]
{ TO { { SCN | TIMESTAMP } expr
p
| RESTORE POINT restore_point /*10.2 */}
| TO BEFORE { SCN | TIMESTAMP} expr|
RESETLOGS /* 10.2 */
}
};
TO BEFORE SCN setzt auf die SCN Nummer vor der Eingabe:
Beispiel:
FLASHBACK DATABASE TO BEFORE SCN 312456;
S t t z.B.
Setzt
B zurück
ü k auff SCN 312455
312455;
TO BEFORE TIME setzt um eine Sekunde vor die Angabe zurück
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 40 / 46
Flashback einschalten
1. DB runterfahren und in Mount
Mount-Phase
Phase setzen:
SHUTDOWN IMMEDIATE
STARTUP MOUNT
2. Zeitspanne, die die DB zurückgesetzt werden soll:
ALTER SYSTEM SET
db_flashback_retention_target=1440;
3. Flashback einschalten & DB öffnen:
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE FLASHBACK ON;
ALTER DATABASE OPEN;
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 41 / 46
Flashback einschalten (f)
Sie sollten jetzt hergehen und die aktuelle SCN notieren:
SELECT current_scn FROM v$database;
z.B. 12345678
4. Im Fehlerfall die DB nun in Mount Phase fahren:
shutdown immediate
startup mount
5. Jetzt wird eingestellt, wie weit zurückgesetzt werden soll:
FLASHBACK DATABASE TO TIMESTAMP (sysdate-1);
FLASHBACK DATABASE TO SCN 12345678;
FLASHBACK DATABASE TO TIMESTAMP to_date('13-10-2009
13:49:00', 'dd-mm-yyyy hh24:mi:ss');
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 42 / 46
Flashback einschalten (ff)
6 Nun kann die DB zunächst als Read-Only geöffnet
6.
werden, falls der falsche Zeitpunkt benutzt wurde:
ALTER DATABASE OPEN READ ONLY;
;
7. Wenn man sicher ist, den richtigen Stand erwischt zu
haben,, benutzt man statt dessen:
SHUTDOWN IMMEDIATE
STARTUP MOUNT
ALTER DATABASE OPEN RESETLOGS;
Hinweis: In Version 10
10.1
1 kann mit dem Flashback nun
nicht mehr nach vorn oder zurück navigiert werden!
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 43 / 46
Einschränkungen von Flashback Database
Man kann das Verkleinern oder Löschen von
Datendateien nicht rückgängig machen
Physische Defekte müssen weiterhin mit einem Backup &
Recovery gelöst werden (=> BuR Kurs bei MuniQSoft ☺ )
Wenn die Controldatei von einem Backup zurückgespielt
wurde ist ein Flashback vor diesem Zeitpunkt unmöglich
Objekte, die mit Nologging verändert wurden, werden
nach einem Flashback meist korrupt sein
Die Zeitspanne
p
für einen Flashback kann durch eine zu
kleine Flash Recovery Area (ab 11.2 Fast Recovery Area)
kürzer sein als erwartet!
MuniQSoft GmbH
DOAG 2009 Flashback
Seite 44 / 46
Flashback Matrix
Problem
Falscher
F
l h DML B
Befehl
f hl
(INSERT, DELETE,
UPDATE)
FLASHBACK
QUERY (ab 9i)
Z it begrenzt
Zeit
b
t
durch
undo_retention
FLASHBACK
TABLE (ab 10g)
Z it begrenzt
Zeit
b
t
durch
undo_retention
B
Begenzt
td
durch
h
verfügbare
Redologs oder
Archivelogs
Geht nicht
Zeit begrenzt durch
db_flashback_
retention target
retention_target
Geht nicht
Geht nicht
Geht nicht
Zeit begrenzt durch
db_flashback_
retention_target
Geht nicht
Geht nicht
Geht nicht
Geht nicht
Zeit begrenzt durch
db_flashback_
retention_target und
Archivelogs seit TBS
Geburt. (Support??)
Geht nicht
Geht nicht
Geht nicht
Geht nicht
Irgendwann muss ja
mal Schluss sein ☺
Geht nicht
Rollback-Segs
Rollback-Segs
Speicher im
Tablespace
Redo/Flashback/
Archivelogs
Redo/
Archivelogs
Geht nicht
TRUNCATE TABLE
Geht nicht
Geht nicht
DROP USER
Geht nicht
DROP TABLESPACE
DROP DATABASE
g
durch
Zeit begrenzt
freien Platz im TBS
Z it begrenzt
Zeit
b
t durch
d
h
db_flashback_
retention_target
LogMiner
(ab 8i)
Geht nicht
Geht nicht
MuniQSoft GmbH
G ht nicht
Geht
i ht
FLASHBACK
DATABASE( ab 10g)
Zeit begrenzt
g
durch
db_flashback_
retention_target
DROP TABLE
Wie funktioniert es ?
FLASHBACK
DROP TABLE (ab 10g)
DOAG 2009 Flashback
Seite 45 / 46
Impressum
Mehr? - Gerne!
Oracle Schulung (SQL, DBA, PL/SQL, APEX,…)
Oracle Consulting & Support
Oracle Entwicklung
Oracle Lizenzvertrieb
MuniQSoft GmbH
Grünwalder Weg 13 a
D-82008 Unterhaching b. München
Telefon:
Fax:
E-Mail
Internet:
MuniQSoft GmbH
+49(0)89-6228 6789 -0
+49(0)89-6228 6789 -50
[email protected]
www.muniqsoft.de
DOAG 2009 Flashback
Seite 46 / 46
Herunterladen