一个行在它的生命周期内可能改变多次。闪回版本查询flashback versions query允许查看一个行所有提交的版本(而不能查看任何未提交的版本),包括创建和结束每个版本的时间戳。另外,还可以查看创建了任何特定版本的行的事务的事务标识符,然后可以将它用于闪回事务查询。
HR@orcl 08-OCT-14>select
employee_id,first_name,last_name,salary,versions_xid,versions_startscn,versions_endscn,versions_operation from emp
2 versions between scn minvalue and maxvalue where employee_id=800;
EMPLOYEE_ID FIRST_NAME LAST_NAME SALARY VERSIONS_XID VERSIONS_STARTSCN VERSIONS_ENDSCN V
----------- -------------------- ------------------------- ---------- ---------------- ----------------- --------------- -
800 WAITSON JANE 2800 0C000A000E020000 1891270 I
800 WAITSON JANE 2800 0F00080008020000 1891248 D
800 WAITSON JANE 2800 0F00200008020000 1891209 1891248 I
2 versions between scn minvalue and maxvalue where employee_id=800;
EMPLOYEE_ID FIRST_NAME LAST_NAME SALARY VERSIONS_XID VERSIONS_STARTSCN VERSIONS_ENDSCN V
----------- -------------------- ------------------------- ---------- ---------------- ----------------- --------------- -
800 WAITSON JANE 2800 0C000A000E020000 1891270 I
800 WAITSON JANE 2800 0F00080008020000 1891248 D
800 WAITSON JANE 2800 0F00200008020000 1891209 1891248 I
1.versions_startscn 通过insert或update创建此版本的行scn
2.versions_starttime 创建此版本的行的时间戳
3.versions_endscn 由于delete或update使此版本的行失效的scn
4.versions_endtime 此版本的行失效的时间戳
5.versions_xid 创建此版本的行的事务的唯一标识符
6.versions_operation 创建此版本的行的事务执行的操作,可以是insert,update或delete。
为了查看伪列,必须在查询中包括versions between关键字。


闪回版本查询不能用于外部表,临时表或v$表,原因是这些对象都不生成撤销数据。