[每日一题] OCP1z0-047 :2013-08-13 Flashback Version Query

2014-11-24 17:04:05 · 作者: · 浏览: 0
[每日一题] OCP1z0-047 :2013-08-13 Flashback Version Query
正确答案:C
使用Flashback Version Query查询记录修改版本,查询表在不同时间点的不同版本的数据,闪回版本查询只能对提交后的数据进行查询,根据题意如下操作:
[html] 
gyj@MYDB> create table digits(id number(2), description varchar2(15));  
  
Table created.  
  
gyj@MYDB> insert into digits values (1,'ONE');  
  
1 row created.  
  
gyj@MYDB> update digits set description ='TWO' where id=1;  
  
1 row updated.  
  
gyj@MYDB> insert into digits values (2,'TWO');  
  
1 row created.  
  
gyj@MYDB> commit;  
  
Commit complete.  
  
gyj@MYDB> delete from digits;  
  
2 rows deleted.  
  
  
gyj@MYDB> select description from digits versions between timestamp minvalue and maxvalue;  
  
DESCRIPTION  
---------------  
TWO  
TWO  

versions between timestamp  minvalue and maxvalue显示所有可能的版本数据。


对于Flashback Version Query(闪回版本查询)允许查询提交版本的记录,继续实验分析结果:

[html] 
gyj@MYDB> select current_scn from v$database;  
  
CURRENT_SCN  
-----------  
    4205516  
  
gyj@MYDB>
insert into digits values (1,'ONE'); 1 row created. gyj@MYDB> update digits set description ='TWO' where id=1; 1 row updated. gyj@MYDB> gyj@MYDB> insert into digits values (2,'TWO'); 1 row created. gyj@MYDB> commit; Commit complete. gyj@MYDB> delete from digits; 2 rows deleted. gyj@MYDB> select current_scn from v$database; CURRENT_SCN ----------- 4205565 gyj@MYDB> SELECT description,VERSIONS_STARTSCN STARTSCN,VERSIONS_ENDSCN ENDSCN, 2 VERSIONS_OPERATION OPERATION,VERSIONS_XID XID 3 FROM digits VERSIONS BETWEEN SCN 4205516 AND 4205565; DESCRIPTION STARTSCN ENDSCN O XID --------------- ---------- ---------- - ---------------- TWO 4205546 I 070009005A130000 TWO 4205546 I 070009005A130000

这里为什么是两条记录,应该懂了吧。。。
   --VERSIONS_STARTSCN:该条记录操作时的SCN,如果为空,表示该行记录是在查询范围外创建的
    --VERSIONS_ENDSCN:该条记录失效时的SCN,如果为空,说明记录在这段时间无操作,或者已经被删数,配合VERSIONS_OPERATION
    --VERSIONS_OPERATION:I表示insert、D表示delete、U表示update
    --VERSIONS_XID:该操作的事务ID