ORACLE VERSIONS 用法

OCA SQL试题
Evaluate the following statements:

CREATE TABLE digits 
(id NUMBER(2), 
description VARCHAR2(15)); 
INSERT INTO digits VALUES (1,'ONE'); 
UPDATE digits  SET description ='TWO' WHERE id=1; 
INSERT INTO digits  VALUES (2,'TWO'); 
COMMIT; 
DELETE FROM digits; 
SELECT description  FROM digits 
VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE; 

What would be the outcome of the above query? 

A. It would not display any values.
B. It would display the value TWO once.
C. It would display the value TWO twice.
D. It would display the values ONE, TWO, and TWO.

在 Oracle9iDatabase 中,我们看到它推出了以闪回查询形式表示的“时间机器”。该特性允许 DBA 看到特定时间的列值,只要在还原段中提供该数据块此前镜像的拷贝即可。但是,闪回查询只提供某时刻数据的固定快照,而不是在两个时间点之间被更改数据的运行状态表示。某些应用程序,如涉及到外币管理的应用程序,可能需要了解一段时期内数值数据的变化,而不仅仅是两个时间点的数值。由于闪回版本查询特性,Oracle Database 10g能够更方便高效地执行该任务。
使用方法:

VERSIONS BETWEEN TIMESTAMP [lower bound] AND [upper bound]

VERSIONS BETWEEN SCN [lower bound] AND [upper bound]

lower bound/ upper bound 可以是具体的timestamp/scn, 也可以是关键字minvalue/maxvalue. 这些关键字让Oracle去找到所有的versions, 当然这要受制于undo_retention参数设置的大小,毕竟这部分信息是放在undo segment上的。

Oracle 10g提供了一些pseudo-columns来帮助我们分析每个version的数据,

VERSIONS_STARTTIME (start timestamp of version);
VERSIONS_STARTSCN (start SCN of version);
VERSIONS_ENDTIME (end timestamp of version);
VERSIONS_ENDSCN (end SCN of version);
VERSIONS_XID (transaction ID of version); 
VERSIONS_OPERATION (DML operation of version);

select description,versionS_starttime, versionS_endtime, versionS_xid,versionS_operation
from digits
versions between timestamp minvalue and maxvalue ;

转载于:https://www.cnblogs.com/iImax/archive/2012/09/11/2680447.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值