设为首页 加入收藏

TOP

闪回版本查询Flashback Version Query(二)
2015-11-10 12:17:38 来源: 作者: 【 】 浏览:12
Tags:版本 查询 Flashback Version Query
级别的版本查询操作。先来看一下引入的数据伪列含义,本截图是从Oracle 11g官方文档中提取出的截图。


ü? Versions_Startxxx表示数据行的最开始出现时间,可以使用SCN或者timestamp表示,如果这个字段为null,表示该数据从undo数据中没有找到对应的版本记录;


ü? Versions_Endxxx表示数据行的截止时间,如果为空,表示数据为当前记录或者已经经过delete操作;


ü? Versions_xid为事务对应的唯一标识,表示该数据行的变化是被哪个事务操作的;


ü? Versions_operation:操作内容;


3、操作实验


下面经过一系列实验,来确定Flashback Version Query使用。原始数据情况如下:


SQL> select * from test;


EMPNO ENAME? ? ? ? ? ? SAL


----- ---------- ---------


?7369 SMITH? ? ? ? 800.00


?7499 ALLEN? ? ? ? 1600.00


进行数据增加操作。


SQL> select versions_xid xid, versions_startscn start_scn, versions_endscn endscn, versions_operation operation, empno from test versions between scn minvalue and maxvalue;


XID? ? ? ? ? ? ? START_SCN? ? ENDSCN OPERATION EMPNO


---------------- ---------- ---------- --------- -----


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 7369


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 7499


0A001B00D3870100? 24306083? ? ? ? ? ? I? ? ? ? ? 1000


versions_operation表示“I”,为新增加的数据。start_scn为数据插入的SCN记录,xid为事务的标示。


SQL> update test set sal=200 where empno=7369;


1 row updated


SQL> commit;


Commit complete


SQL> select versions_xid xid, versions_startscn start_scn, versions_endscn endscn, versions_operation operation, empno, sal from test versions between scn minvalue and maxvalue;


XID? ? ? ? ? ? ? START_SCN? ? ENDSCN OPERATION EMPNO? ? ? SAL


---------------- ---------- ---------- --------- ----- ---------


0200110020160000? 24306146? ? ? ? ? ? U? ? ? ? ? 7369? ? 200.00


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 24306146? ? ? ? ? ? 7369? ? 800.00


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 7499? 1600.00


0A001B00D3870100? 24306083? ? ? ? ? ? I? ? ? ? ? 1000? ? 200.00


U表示数据修改后的版本数据。如果删除数据,如下操作:


SQL> delete test where empno=7499;


1 row deleted


SQL> commit;


Commit complete


SQL> select versions_xid xid, versions_startscn start_scn, versions_endscn endscn, versions_operation operation, empno, rowid from test versions between scn minvalue and maxvalue;


XID? ? ? ? ? ? ? START_SCN? ? ENDSCN OPERATION EMPNO ROWID


---------------- ---------- ---------- --------- ----- ------------------


0A001100D3870100? 24306188? ? ? ? ? ? D? ? ? ? ? 7499 AAAtPCAABAAAeu5AAB


0200110020160000? 24306146? ? ? ? ? ? U? ? ? ? ? 7369 AAAtPCAABAAAeu5AAA


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 24306146? ? ? ? ? ? 7369 AAAtPCAABAAAeu5AAA


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 24306188? ? ? ? ? ? 7499 AAAtPCAABAAAeu5AAB


0A001B00D3870100? 24306083? ? ? ? ? ? I? ? ? ? ? 1000 AAAtPCAABAAAeu6AAA


通过上面的数据,是可以做到跟踪整个Undo_retention中数据变化的情况。下面监控一下事务标记信息。


SQL> delete test;


2 rows deleted


SQL> select xid from v$transaction;


XID


----------------


0A000300C3870100


SQL> commit;


Commit complete


SQL> select versions_xid xid, versions_startscn start_scn, versions_endscn endscn, versions_operation operation, empno, rowid from test versions between scn minvalue and maxvalue;


XID? ? ? ? ? ? ? START_SCN? ? ENDSCN OPERATION EMPNO ROWID


---------------- ---------- ---------- --------- ----- ------------------


0A000300C3870100? 24306249? ? ? ? ? ? D? ? ? ? ? 7369 AAAtPCAABAAAeu5AAA


0A001100D3870100? 24306188? ? ? ? ? ? D? ? ? ? ? 7499 AAAtPCAABAAAeu5AAB


0200110020160000? 24306146? 24306249 U? ? ? ? ? 7369 AAAtPCAABAAAeu5AAA


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 24306146? ? ? ? ? ? 7369 AAAtPCAABAAAeu5AAA


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 24306188? ? ? ? ? ? 7499 AAAtPCAABAAAeu5AAB


0A000300C3870100? 24306249? ? ? ? ? ? D? ? ? ? ? 1000 AAAtPCAABAAAeu6AAA


0A001B00D3870100? 24306083? 24306249 I? ? ? ? ? 1000 AAAtPCAABAAAeu6AAA


7 rows selected


从v$transaction中获取到的数据XID,可以在其中对应上。


4、结论


Flashback Version Query是Oracle Flashback系列的一个技术。虽然基于的Undo过期数据时间上是有限制的,结合Flashback Transaction Query,可以做到

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇使用Flashback Database进行数据.. 下一篇闪回事务查询Flashback Transacti..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: