Environment: Oracle database 11.2.0.3.0 Enterprise Edition.
This is a quick overview (mostly for myself ;-)) of the flashback features that are available with Oracle 11g.
– query table data from specific point in time
1
2
3
| SELECT * FROM matthiashAS OF TIMESTAMPTO_TIMESTAMP('2013-05-03 14:00:00', 'YYYY-MM-DD HH24:MI:SS'); |
– query table data from one hour ago
1
2
3
| SELECT * FROM matthiashAS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '60' MINUTE); |
– query all versions of one or more records
1
2
3
4
5
6
7
| SELECT versions_startscn, versions_starttime,versions_endscn, versions_endtime,versions_xid, versions_operation,m_idFROM matthiashVERSIONS BETWEEN TIMESTAMPTO_TIMESTAMP('2013-05-03 13:00:00', 'YYYY-MM-DD HH24:MI:SS')AND TO_TIMESTAMP('2013-05-03 14:45:00', 'YYYY-MM-DD HH24:MI:SS') |
– get the user name of the user who modified records
1
2
3
4
5
6
7
8
9
10
| GRANT SELECT ANY TRANSACTION TO matthiash;SELECT xid, logon_userFROM flashback_transaction_queryWHERE xid IN (SELECT versions_xid FROM matthiash VERSIONS BETWEEN TIMESTAMPTO_TIMESTAMP('2013-05-03 13:00:00', 'YYYY-MM-DD HH24:MI:SS')AND TO_TIMESTAMP('2013-05-03 14:45:00', 'YYYY-MM-DD HH24:MI:SS'))AND xid = HEXTORAW('08000800C6070000'); |
– flashback entire table to specific point in time
1
2
3
4
| ALTER TABLE matthiash ENABLE ROW MOVEMENTFLASHBACK TABLE matthiashTO TIMESTAMP TO_TIMESTAMP('2013-05-03 13:00:00', 'YYYY-MM-DD HH24:MI:SS'); |
– creating restore point and flashback table to restore point
1
2
3
4
5
6
7
8
9
| CREATE RESTORE POINT before_table_update;SELECT NAME, SCN, TIMEFROM V$RESTORE_POINT;UPDATE matthiash SET m_id=0;FLASHBACK TABLE matthiash.matthiashTO RESTORE POINT before_table_update; |
– recover dropped table from recycle bin (note: does not work for all types of tables)
1
2
3
4
5
6
7
| DROP TABLE matthiash;SELECT * FROM recyclebin;FLASHBACK TABLE matthiash TO BEFORE DROP;FLASHBACK TABLE "BIN$29FWNr5ICjbgQ68BEqzYLw==$0" TO BEFORE DROP RENAME TO matthiash; |
– recover entire database to restore point, SCN or point in time
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| CREATE RESTORE POINT before_table_drop GUARANTEE FLASHBACK DATABASE;DROP TABLE matthiash PURGE;SHUTDOWN IMMEDIATE;STARTUP MOUNT;FLASHBACK DATABASE TO RESTORE POINT BEFORE_TABLE_DROP;FLASHBACK DATABASE TO SCN 46963;FLASHBACK DATABASE TO TIME "TO_TIMESTAMP('2013-05-03 15:00:00', 'YYYY-MM-DD HH24:MI:SS')";ALTER DATABASE OPEN RESETLOGS; |
References:
http://matthiashoys.wordpress.com/2013/05/03/oracle-11g-flashback-examples/
http://matthiashoys.wordpress.com/2013/05/03/oracle-11g-flashback-examples/
No comments:
Post a Comment