使用闪回版本查询
来获取在给定的时间区间中,指定的行的不同版本。当
COMMIT
语句被执行时,一个新的行版本被创建。
闪回版本查询使用
VERSIONS BETWEEN
子句:
VERSIONS {BETWEEN {SCN | TIMESTAMP} start AND end},其中,
start
和
end
是代表开始和结束的表达式,代表被查询的时间区间。
下面演示一下闪回版本查询如何使用。
闪回版本查询返回一个表,包含行在指定的时间区间中的所有版本。在表中的每行都包含关于行版本的元数据伪列。需要注意的是,返回结果是左包含右不包含,即VERSIONS_START* <= t < VERSIONS_END*。
语法如下:
SELECT .....FROM tablename VERSIONS {BETWEEN {SCN | TIMESTAMP} start AND end}
--start,end可以是时间也可以是scn
- Flashback Version Query伪列说明
- versions_start{scn|time} 版本开始的scn或时间戳
- versions_end{scn|time} 版本结束scn或时间戳,如果有值表明此行后面被更改过是旧版本,如果为null,则说明行版本是当前版本或行被删除(即versions_operation值为D)。
- versions_xid 创建行版本的事务ID
- versions_operation 在行上执行的操作(I=插入,D=删除,U=更新)
下面演示一下闪回版本查询如何使用。
点击(此处)折叠或打开
- SQL>
- SQL> create table scott.hoegh as select * from scott.dept where 1=2;
-
- Table created.
-
- SQL>
- SQL> select systimestamp from dual;
-
- SYSTIMESTAMP
- ---------------------------------------------------------------------------
- 15-APR-15 09.37.46.593306 PM +08:00
-
- SQL> select current_scn from v$database;
-
- CURRENT_SCN
- -----------
- 1172460
-
- SQL>
- SQL> insert into scott.hoegh select * from scott.dept where deptno=10;
-
- 1 row created.
-
- SQL> commit;
-
- Commit complete.
-
- SQL> c/10/20
- SP2-0023: String not found.
- SQL> insert into scott.hoegh select * from scott.dept where deptno=20;
-
- 1 row created.
-
- SQL> c/20/30
- 1* insert into scott.hoegh select * from scott.dept where deptno=30
- SQL> /
-
- 1 row created.
-
- SQL> commit;
-
- Commit complete.
-
- SQL> update scott.hoegh set dname='HOEGH' where deptno=10;
-
- 1 row updated.
-
- SQL> commit;
-
- Commit complete.
-
- SQL> insert into scott.hoegh select * from scott.dept where deptno=40;
-
- 1 row created.
-
- SQL> commit;
-
- Commit complete.
-
- SQL> select systimestamp from dual;
-
- SYSTIMESTAMP
- ---------------------------------------------------------------------------
- 15-APR-15 09.41.12.200887 PM +08:00
-
- SQL> select current_scn from v$database;
-
- CURRENT_SCN
- -----------
- 1172586
-
- SQL> SQL> set linesize 300
- SQL> /
-
- STARTSCN STARTTIME ENDSCN ENDTIME VERSIONS_XID V DEPTNO
- ---------- ------------------------- ---------- ------------------------- ---------------- - ----------
- 1172566 15-APR-15 09.41.00 PM 04000A0087020000 I 40
- 1172557 15-APR-15 09.40.36 PM 05001D0025030000 U 10
- 1172521 15-APR-15 09.39.18 PM 02000B0033030000 I 30
- 1172521 15-APR-15 09.39.18 PM 02000B0033030000 I 20
- 1172493 15-APR-15 09.38.27 PM 1172557 15-APR-15 09.40.36 PM 0500040026030000 I 10
-
- SQL> SQL>
- SQL> select versions_startscn startscn,versions_starttime starttime,versions_endscn endscn,versions_endtime endtime,versions_xid,versions_operation,deptno
- from scott.hoegh
- versions between scn 1172460 and 1172586; 2 3
-
- STARTSCN STARTTIME ENDSCN ENDTIME VERSIONS_XID V DEPTNO
- ---------- ------------------------- ---------- ------------------------- ---------------- - ----------
- 1172566 15-APR-15 09.41.00 PM 04000A0087020000 I 40
- 1172557 15-APR-15 09.40.36 PM 05001D0025030000 U 10
- 1172521 15-APR-15 09.39.18 PM 02000B0033030000 I 30
- 1172521 15-APR-15 09.39.18 PM 02000B0033030000 I 20
- 1172493 15-APR-15 09.38.27 PM 1172557 15-APR-15 09.40.36 PM 0500040026030000 I 10
-
- SQL>
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30162081/viewspace-1578998/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30162081/viewspace-1578998/