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