11 Copyright © 2007, Oracle. All rights reserved. Using Flashback Technology
Copyright © 2007, Oracle. All rights reserved Objectives After completing this lesson, you should be able to: Query the recycle bin Restore dropped tables from the recycle bin Perform Flashback Query Use Flashback Version Query Use Flashback Transaction Query Use Flashback Transaction
Copyright © 2007, Oracle. All rights reserved Flashback Technology Object Level Scenario ExamplesFlashback Technology Depends On Affects Data DatabaseTruncate table; Undesired multitable changes made DatabaseFlashback logs TRUE TableDrop tableDropRecycle binTRUE Update with the wrong WHERE clause TableUndo dataTRUE Compare current data with data from the past QueryUndo dataFALSE Compare versions of a row VersionUndo dataFALSE Keep historical transaction data Data ArchiveUndo dataTRUE TransactionInvestigate and back out suspect transactions TransactionUndo dataTRUE
Copyright © 2007, Oracle. All rights reserved Transactions and Undo Undo “old” data in undo tablespace DML operations Original data in buffer cache
Copyright © 2007, Oracle. All rights reserved Guaranteeing Undo Retention A transaction that generates more undo than what there is space for will fail. SELECT statements running 15 minutes or less are always satisfied. Undo data in undo tablespace Retention guarantee: 15 minutes
Copyright © 2007, Oracle. All rights reserved Preparing Your Database for Flashback Creating an undo tablespace Enabling Automatic Undo Management Specifying versus guaranteeing undo retention Default database initialization parameters: — UNDO_MANAGEMENT='AUTO' — UNDO_TABLESPACE='UNDOTBS1' — UNDO_RETENTION=900
Copyright © 2007, Oracle. All rights reserved Preparing Your Database for Flashback Full Notes Page
Copyright © 2007, Oracle. All rights reserved Flashback Drop and the Recycle Bin DROP TABLE employees; FLASHBACK TABLE employees TO BEFORE DROP; Mistake was made. RECYCLEBIN=ON
Copyright © 2007, Oracle. All rights reserved Recycle Bin DROP TABLE employees; BIN$zbjra9wy==$0EMPLOYEES_PK EMPLOYEES Recycle bin DBA_FREE_SPACE BIN$zbjrBdpw==$0 USER_OBJECTS BIN$zbjrBdpw==$0 EMPLOYEES BIN$zbjra9wy==$0 EMPLOYEES_PK 4 Objects are: – Renamed – Not moved
Copyright © 2007, Oracle. All rights reserved Recycle Bin Full Notes Page
Copyright © 2007, Oracle. All rights reserved Restoring Tables from the Recycle Bin Restore dropped tables and dependent objects. If multiple recycle bin entries have the same original name: –Use unique, system-generated names to restore a particular version –When using original names, the restored table is last in, first out (LIFO) Rename the original name if that name is currently used. FLASHBACK TABLE TO BEFORE DROP [RENAME TO ];
Copyright © 2007, Oracle. All rights reserved Recycle Bin: Automatic Space Reclamation BIN$zbjrBdpw==$0 BIN$zbjra9wy==$0 BIN$zbjra9wy==$0 BIN$zbjrBdpw==$ Recycle bin DBA_FREE_SPACE - RECYCLEBIN Autoextend
Copyright © 2007, Oracle. All rights reserved Recycle Bin: Manual Space Reclamation PURGE {TABLE |INDEX } PURGE TABLESPACE [USER ] PURGE [USER_|DBA_]RECYCLEBIN
Copyright © 2007, Oracle. All rights reserved Bypassing the Recycle Bin DROP TABLESPACE [INCLUDING CONTENTS] ; DROP USER [CASCADE] ; DROP TABLE [PURGE] ;
Copyright © 2007, Oracle. All rights reserved Querying the Recycle Bin SELECT owner, original_name, object_name, type, ts_name, droptime, related, space FROM dba_recyclebin WHERE can_undrop = 'YES'; SQL> SELECT original_name, object_name, ts_name, droptime FROM user_recyclebin WHERE can_undrop = 'YES'; 2 ORIGINAL_NAME OBJECT_NAME TS_NAM DROPTIME EMPLOYEES2 BIN$NE4Rk64w...gbpQ==$0 USERS :15:45:13 SQL> SHOW RECYCLEBIN
Copyright © 2007, Oracle. All rights reserved Querying Data from Dropped Tables SELECT... FROM "BIN$zbjrBdpw==$0" [AS OF...] WHERE... Recycle bin DBA_INDEXES YES INDEX_NAMEDROPPED NOSALES_PK DBA_TABLES TABLE_NAMEDROPPED YES NOSALES BIN$zbjrBdpw==$0 EMPLOYEES BIN$zbjra9wy==$0 EMPLOYEES_PK
Copyright © 2007, Oracle. All rights reserved Using Flashback Technology to Query Data Flashback Query –Query all data at a specified point in time. Flashback Version Query –See all versions of a row between two times. –See the transactions that changed the row. Flashback Transaction Query –See all changes made by a transaction. Tx3 Tx1 Tx2 Time Flashback
Copyright © 2007, Oracle. All rights reserved Flashback Query T1 T2 SELECT employee_id, salary FROM employees AS OF TIMESTAMP WHERE employee_id = 200 employees Unwanted updates Use to query all data at a specified point in time.
Copyright © 2007, Oracle. All rights reserved Flashback Query: Example 11:0011:10 UPDATE employees SET salary = (SELECT salary FROM employees AS OF TIMESTAMP TO_TIMESTAMP (' :00:00', 'yyyy-mm-dd hh24:mi:ss') WHERE employee_id = 200) WHERE employee_id = 200 employees salary = 4,400 employees salary = 4,400 salary = 4,840
Copyright © 2007, Oracle. All rights reserved Flashback Version Query t1 t2 Tx1Tx1Tx2Tx2 SELECT versions_xid, salary FROM employees VERSIONS BETWEEN TIMESTAMP and WHERE employee_id = 200; Tx0Tx0 Tx0Tx0Tx1Tx1Tx2Tx2 employees 200
Copyright © 2007, Oracle. All rights reserved Using Enterprise Manager to Perform Flashback Version Query
Copyright © 2007, Oracle. All rights reserved Flashback Version Query: Considerations The VERSIONS clause cannot be used to query: –External tables –Temporary tables –Fixed tables –Views The VERSIONS clause cannot span DDL commands. Segment shrink operations are filtered out.
Copyright © 2007, Oracle. All rights reserved Flashback Transaction Query Undo SQL FLASHBACK_TRANSACTION_QUERY DBA User Erroneous DML
Copyright © 2007, Oracle. All rights reserved Using Enterprise Manager to Perform Flashback Transaction Query
Copyright © 2007, Oracle. All rights reserved Flashback Transaction Query: Considerations DDL commands are seen as dictionary updates. Flashback Transaction Query on a transaction underlying a DDL command displays the data dictionary changes. Dropped objects appear as object numbers. Dropped users appear as user identifiers.
Copyright © 2007, Oracle. All rights reserved Flashback Transaction Setting up Flashback Transaction prerequisites Stepping through a possible workflow Using the Flashback Transaction Wizard Querying transactions with and without dependencies Choosing back-out options and flashing back transactions Reviewing the results
Copyright © 2007, Oracle. All rights reserved Prerequisites
Copyright © 2007, Oracle. All rights reserved Flashing Back a Transaction You can flash back a transaction with Enterprise Manager or from the command line. EM uses the Flashback Transaction Wizard, which calls the DBMS_FLASHBACK.TRANSACTION_BACKOUT procedure with the NOCASCADE option. If the PL/SQL call finishes successfully, it means that the transaction does not have any dependencies and a single transaction is backed out successfully.
Copyright © 2007, Oracle. All rights reserved Possible Workflow 1.Viewing data in a table 2.Discovering a logical problem 3.Using Flashback Transaction 1.Performing a query 2.Selecting a transaction 3.Flashing back a transaction (with no conflicts) 4.Choosing other back-out options (if conflicts exists) 4.Reviewing Flashback Transaction results
Copyright © 2007, Oracle. All rights reserved Viewing Data
Copyright © 2007, Oracle. All rights reserved Flashback Transaction Wizard
Copyright © 2007, Oracle. All rights reserved Flashback Transaction Wizard
Copyright © 2007, Oracle. All rights reserved Flashback Transaction Wizard 2 1
Copyright © 2007, Oracle. All rights reserved Flashback Transaction Wizard
Copyright © 2007, Oracle. All rights reserved Choosing Other Back-out Options
Copyright © 2007, Oracle. All rights reserved Choosing Other Back-out Options
Copyright © 2007, Oracle. All rights reserved Final Steps Without EM After choosing your back-out option, the dependency report is generated in the DBA_FLASHBACK_TXN_STATE and DBA_FLASHBACK_TXN_REPORT tables. Review the dependency report that shows all transactions which were backed out. Commit the changes to make them permanent. Roll back to discard the changes.
Copyright © 2007, Oracle. All rights reserved Summary In this lesson, you should have learned how to: Query the recycle bin Restore dropped tables from the recycle bin Perform Flashback Query Use Flashback Version Query Use Flashback Transaction Query Use Flashback Transaction
Copyright © 2007, Oracle. All rights reserved Practice 11 Overview: Performing Flashback Database This practice covers the following topics: Recycle bin activities Flashback Query Flashback Transaction
Copyright © 2007, Oracle. All rights reserved