2014-12-09 Created By BaoXinjian
一、摘要
Flashback Transaction Query也是使用UNDO信息来实现。
利用这个功能可以查看某个事务执行的所有变化,它需要访问flashback_transaction_query 视图,这个视图的XID列代表事务ID,利用这个ID可以区分特定事务发生的所有数据变化。
二、案例
Step1. 创建测试数据
SQL> insert into B values(3);已创建 1 行。SQL> commit;提交完成。SQL> select * from B; ID ---------- 1 2 3
Step2. 查看视图,每个事务都对应相同的XID
SQL>Select xid,operation,commit_scn,undo_sql from flashback_transaction_query where xid in (Select versions_xid from B versions between scn minvalue and maxvalue);
或者
SQL>select xid,commit_scn,commit_timestamp,operation,undo_sql from flashback_transaction_query q where q.xid in(select versions_xid from B versions between scn 413946 and 413959);XID OPERATION COMMIT_SCN UNDO_SQL---------------- -------------------------------- ----------03001C006A020000 DELETE 1100723 insert into "SYS"."B"("ID") values ('4');03001C006A020000 DELETE 1100723 insert into "SYS"."B"("ID") values ('3');03001C006A020000 DELETE 1100723 insert into "SYS"."B"("ID") values ('2')
Thanks and Regards