【备份恢复】闪回技术之闪回版本查询

闪回版本查询
语法:
select column_name[,column_name,...]
from table_name
versions between[SCN|TIMESTAMP] [expr|MINVALUE] and[epxr|MAXVALUE];

 

1)  查询 scott用户 emp表字段 empno 7369 对应的sal 值为 800

SYS@ORA11GR2>conn scott/tiger

Connected.

SCOTT@ORA11GR2>

SCOTT@ORA11GR2>select ename,job,sal from emp where empno=7369;

 

ENAME      JOB              SAL

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

SMITH      CLERK            800

 

2) sal 字段进行更新,更新三次,每次增加 200
--第一次:

SCOTT@ORA11GR2>update emp set sal=sal+200 where empno=7369;

 

1 row updated.

 

SCOTT@ORA11GR2>commit;

 

Commit complete.

 

--第二次:

SCOTT@ORA11GR2>update emp set sal=sal+200 where empno=7369;

 

1 row updated.

 

SCOTT@ORA11GR2>commit;

 

Commit complete.

 

--第三次:

SCOTT@ORA11GR2>update emp set sal=sal+200 where empno=7369;

 

1 row updated.

 

SCOTT@ORA11GR2>commit;

 

Commit complete.

 

3) 查询更新三次后的值

SCOTT@ORA11GR2>select ename,job,sal from emp where empno=7369;

 

ENAME      JOB              SAL

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

SMITH      CLERK           1400

 

 

4) 闪回版本查询,我们可以清晰的看到更新的每个版本:

SCOTT@ORA11GR2>select to_char(versions_starttime,'yyyy-mm-dd hh24:mi:ss') as starttime,versions_xid,ename,job,sal from emp versions between timestamp sysdate-10/1440 and sysdate where empno=7369;

 

STARTTIME           VERSIONS_XID     ENAME      JOB              SAL

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

2016-09-29 19:25:14 11000300E1000000 SMITH      CLERK           1400

2016-09-29 19:25:00 0C002000DC000000 SMITH      CLERK           1200

2016-09-29 19:24:35 14000400E1000000 SMITH      CLERK           1000

                                     SMITH       CLERK          800

 

 

5) 附:涉及到的伪列

伪列

含义

VERSIONS_STARTSCN
VERSIONS_STARTTIME

该记录操作时的 scn 或时间,如果为空,表示该行记录是在查询范围外创建的。

VERSIONS_ENDSCN
VERSIONS_ENDTIME

该记录失效时的 scn 或时间,如果为空,说明记录当前时间在当前表内存在,或者已经被删除了,可以配合着 VERSIONS_OPERATION 列来看,如VERSIONS_OPERATION 列值为 D,说明该列已被删除,如果该列为空,则说明记录在这段时间无操作。

VERSIONS_OPERATION

对该行执行的操作: I 表示 insertD 表示 deleteU 表示 update
提示: 对于索引键的 update 操作,版本查询可能会将其识别成两个操作: DELETE INSERT

VERSIONS_XID

该操作的事务 ID


6) 闪回版本注意事项
ü VERSIONS 子句不能用于:
-
外部表
-
临时表
-
固定表
-
视图
ü VERSIONS 不能跨 DDL 命令。
ü 段收缩操作被过滤掉。



请使用浏览器的分享功能分享到微信等