zoukankan      html  css  js  c++  java
  • 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 ;
  • 相关阅读:
    数据结构:图 (总结)
    排序算法总结(此篇文章是14年写作,代码难看,请看我新发表的排序总结)
    no identifier specified for entity错误
    哈夫曼编码算法思想总结
    线索二叉树
    ORACLE 错误 ora-01830 解决方法
    (转)web会话管理方式
    (转)C3P0配置
    分页技术()
    简易 DBUtil 封装
  • 原文地址:https://www.cnblogs.com/iImax/p/2680447.html
Copyright © 2011-2022 走看看