• 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 ;
  • 相关阅读:
    单片机数字滤波的算法!
    Python中列表的兄弟
    史上最全的Python程序员面试必备常用问题
    新人在学习web前端的容易踩哪些坑?
    linux+arm系统学习与基础学习
    C和C++笔记:动态内存管理
    Python 爬虫干货之urllib库
    单片机、ARM、MUC、DSP、FPGA、嵌入式错综复杂的关系!
    单片机死机了怎么办?
    单片机各种复位电路原理
  • 原文地址:https://www.cnblogs.com/iImax/p/2680447.html
Copyright © 2020-2023  润新知