Der Blick zurück in die Vergangenheit: Rollback Segmente, Undo Segmente und Flashback Christiane Wellnitz ORACLE Deutschland GmbH Berlin Undo Tablespace y Vereinfacht die Administration der Rollback-Daten y Automatische Rollbacksegmente – Kein create, drop, oder alter rollback segments. – Oracle8i Rollbacksegmente sind als Alternative verfügbar y Aktivierung über Parameter UNDO_MANAGEMENT – AUTO – MANUAL y Automatische Rollbacksegmente liegen immer in einem Undo-Tablespace, der definiert ist durch den Parameter UNDO_TABLESPACE. 2 Undo Tablespaces in Oracle Enterprise Manager 9i Oracle Flashback Oracle Invents Time Machine y Diese Funktionalität gibt dem Benutzer die Möglichkeit eine konsistente Sicht auf die Datenbank zu einem bestimmten Zeitpunkt in der Vergangenheit. y Der Benutzer kann eine für die lesende Sicht einen Systemzeitpunkt bestimmen oder er muß eine SCN ( system change number) angeben. y Nur die Transactionen die bis zu diesem Zeitpunkt committed wurden, sind sichtbar. Nicht mit commit abgeschlossene Transaktionen sind nicht sichtbar y Jede lokale SQL Abfrage ist erlaubt. y Es sind keine DML, DDL oder verteilte Operationen erlaubt Oracle Flashback (cont.) y Der System Managed Undo (SMU) Mode muß enabled sein. y Undo retention (Time in seconds) muß gesetzt sein: Alter system set undo_retention = 1800; heißt, daß die FlashBack Abfrage bis zu 30 Minuten möglich ist y Mögliche Anwendungen sind: – – – Self-service repair Packaged applications wie das Email-System Decision Support Systems um Trend Analysen zu fahren Flashback Query y In 9i Rel1: – Flashback innerhalb der Session y Nur ein definierter Zeitpunkt für ein Statement EXECUTE DBMS_FLASHBACK.ENABLE_AT_TIME('01-JAN-2002 12:00:00'); SELECT salary FROM employee WHERE empid = 41863; EXECUTE DBMS_FLASHBACK.DISABLE; – Keine LOB Unterstützung y 1. Enable the database to run in Automatic Undo Management mode. y 2. Set up the Flashback Query environment. y 3. Run Flashback Query to restore the data. y 4. ALTER SYSTEM SET UNDO_RETENTION=1800 create undo tablespace <tablespace_name> datafile '<data filename>' size '<datafile size>' undo_tablespace=<tablespace_name> undo_management=auto drop user tkltdeja cascade; create user tkltdeja identified by tkltdeja; grant connect, resource to tkltdeja; grant execute on dbms_flashback to tkltdeja; Flashback Query Verbesserungen y In 9i Rel2 Volle SQL Unterstützung – – – Flashback query innerhalb des SQL Kommandos Vergleiche möglich / Viewdefinition möglich Unterstützung von LOBs SELECT salary FROM employee AS OF SCN 4712 WHERE empid = 41863; SELECT sal2-sal1 as "Differenz" FROM (SELECT salary as sal2 FROM employees AS OF TIMESTAMP (SYSTIMESTAMP -INTERVAL '1' DAY) WHERE employee_id = 206) , (SELECT salary as sal1 FROM employees AS OF TIMESTAMP (SYSTIMESTAMP -INTERVAL '4' DAY) WHERE employee_id = 206) / Flashback Query Verbesserungen in 9iR2 – View- und Tabellendefinition möglich SELECT salary FROM employee AS OF SCN 4712 WHERE empid = 41863; SELECT a.last_name, b.last_name From employees AS OF TIMESTAMP SYSDATE–1/24 a FULL OUTER JOIN Employees AS OF TIMESTAMP SYSDATE- 2/24 b ON ( a.employee_id=b.employee_id; CREATE TABLE new_employees AS SELECT * FROM employees AS OF SCN 90932; Q U E S T A N S W I O N S E R S