作者:轻松淘2008c_555 | 来源:互联网 | 2014-07-09 16:02
flashback六大技术之flashbackversionquery环境:[sql]23:47:03hr@ORCL(^ω^)select*fromv$versionwhererownum1;BANNER------------------------------------------------
flashback六大技术之flashback version query
环境:
[sql]
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
www.2cto.com
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
www.2cto.com
2 实验
[sql]
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;
www.2cto.com
提交完成。
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,&#39;qao&#39;);
已创建 1 行。
23:40:56 hr@ORCL (^ω^) insert into t1 values(156,&#39;qinqin&#39;);
已创建 1 行。
23:41:19 hr@ORCL (^ω^) commit;
www.2cto.com
提交完成。
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 www.2cto.com
7844 TURNER
7900 JAMES
7902 FORD
156 qinqin 3930985 I 04002000D4030000
110 Think
已选择16行。