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