Versions between版本查询
oracle 10g开始,提供了功能更加强大的闪回版本查询,通过versions between能够查看指定时间段内undo表空间中记录的不同版本(注意,只包括被提交的记录)。
在标准查询后面附加versions between timestamp[/scn] t1 and t2即可。记录在版本查询中可能会是一对多的关系,比如某些记录如果被修改过多次,并分别提交,那么你在查询的时候,如果修改的操作是在你指定的时间段(或scn),则记录每次修改的结果都会被选择出来,这比较有利于我们做数据的对比,比如看看数据究竟是怎么变化的。
版本查询过程中提供了多个伪列如下:
VERSIONS_STARTSCN --该记录操作时的scn
VERSIONS_STARTTIME --该记录操作时的时间
如果为空,表示该行记录是在查询范围外创建的。
VERSIONS_ENDSCN --该记录失效时的SCN
VERSIONS_ENDTIME --该记录失效时的时间
如果为空,说明记录当前时间在当前表内存在,或者已经被删除了,可以配合着VERSIONS_OPERATION列来看,如果VERSIONS_OPERATION列值为D,说明该列已被删除,如果该列为空,则说明记录在这段时间无操作。
VERSIONS_OPERATION --对该行执行的操作:I表示insert,D表示delete,U表示update。
提示:对于索引键的update操作,版本查询可能会将其识别成两个操作:DELETE和INSERT。
VERSIONS_XID --该操作的事务ID