flashback六大技术之flashback version query

环境:

23:47:03 hr@ORCL (^ω^) select * from v$version where rownum=1;

BANNER
--------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod


1 原理介绍

flashback query只能“穿越”到过去的某个时间点上的数据库版本,但是在当前时间和过去的某个时间点上,一个表中的数据可能已经被变更多次,单一版本可能无法满足恢复的需求。通过flashback version query能够查看指定时间段内undo表空间中被提交的记录的不同版本。

flashback version query的伪列说明

versions_startscn

versions_starttime

记录了操作时的SCN或时间,如果为空,表示在查询范围外创建的

versions_endscn

versions_endtime

记录了失效时的SCN或时间,配合version_operation列查看,如果为空,或者被删除、或者

该记录当前时间在当前表不存在

versions_operation I:insert D:delete U:update
versions_operation 事务ID

2 实验

23:38:26 hr@ORCL (^ω^) select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
                 3930808

23:38:48 hr@ORCL (^ω^) update t1 set empno=122 where ename='Water';

已更新 1 行。

23:39:42 hr@ORCL (^ω^) commit;

提交完成。

23:40:06 hr@ORCL (^ω^) delete t1 where rownum<5;

已删除4行。

23:40:25 hr@ORCL (^ω^) commit;

提交完成。

23:40:29 hr@ORCL (^ω^) insert into t1 values(155,'qao');

已创建 1 行。

23:40:56 hr@ORCL (^ω^) insert into t1 values(156,'qinqin');

已创建 1 行。

23:41:19 hr@ORCL (^ω^) commit;

提交完成。

23:41:22 hr@ORCL (^ω^) select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
                 3931066

23:46:34 hr@ORCL (^ω^) select empno,ename,versions_startscn,versions_endscn,versions_operation,versions_xid
23:47:00   2              from t1 versions between scn 3930808 and 3931066;

     EMPNO ENAME      VERSIONS_STARTSCN VERSIONS_ENDSCN VE VERSIONS_XID
---------- ---------- ----------------- --------------- -- ----------------
       155 qao                  3930985                 I  04002000D4030000
       111 Linshuibin           3930897                 D  06002F00B6040000
       122 Water                3930897                 D  06002F00B6040000
       122 Water                3930883         3930897 U  02001100BD040000
       111 Water                                3930883
       111 Linshuibin                           3930897
      7566 JONES                3930897                 D  06002F00B6040000
      7521 WARD                 3930897                 D  06002F00B6040000
      7521 WARD                                 3930897
      7566 JONES                                3930897
      7788 SCOTT
      7844 TURNER
      7900 JAMES
      7902 FORD
       156 qinqin               3930985                 I  04002000D4030000
       110 Think

已选择16行。


你可能感兴趣的:(flashback)