闪回版本查询:
一个表中的行在它的生命周期中可能改变多次。闪回版本查询(flashback versions query)允许查看一个
行所有提交的版本(不能查看任何未提交的版本),包括创建和结束每个版本的时间戳。另外,还可以查看创建了任何特定版本的行的事务的事务标识符,然后可以将它用于闪回事务查询。此信息可以通过每个表可用的
许多伪列来提供。伪列是由Oracle在内部附加到行上的列:它们不属于关系数据库的ISO标准,但是它们可能
很有用。一个常见的伪列是行ID:数据库中每一行的唯一标识符,索引中使用它作为返回到表的指针。与闪回
相关的伪列包括:
*versions_startscn:通过insert或update创建此版本的行的scn
*versions_starttime:创建此版本的行的时间戳
*versions_endscn:由于delete或update使此版本的行失效的scn
*versions_endtime:此版本的行失效的时间戳
*versions_xid:创建此版本的行的事务的唯一标识符
*versions_operations:创建此版本的行的事务执行的操作。可以是insert,update或delete
查看伪列,必须在查询中包括versions between关键字。例如:
SQL> select empno,ename,sal,versions_xid,versions_startscn,versions_endscn,versi
ons_operation from emp versions between scn minvalue and maxvalue where
2 empno=7369;
EMPNO ENAME SAL VERSIONS_XID VERSIONS_STARTSCN VERSIONS_ENDSCN V
----- ---------- ------ ---------------- ----------------- --------------- -
7369 SMITH 800
SQL> select empno,ename,sal,versions_xid,versions_starttime,versions_endtime,
2 versions_operation from emp versions between timestamp (systimestamp-1/24)
and systimestamp where empno=7369;
该命令查询:在最近一个小时内存在的员工编号为7369的所有版本。
(注:闪回版本查询不能用于外部表。临时表或v$视图,原因是这些对象都不生成撤销数据)。