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 ;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM