Oracle 11G 闪回技术 使用闪回版本查询

使用闪回版本查询来获取在给定的时间区间中,指定的行的不同版本。当COMMIT语句被执行时,一个新的行版本被创建。

闪回版本查询使用VERSIONS BETWEEN子句:VERSIONS {BETWEEN {SCN | TIMESTAMP} start AND end}

startend是代表开始和结束的表达式,代表被查询的时间区间。

闪回版本查询返回一个表,包含行在指定的时间区间中的所有版本。在表中的每行都包含关于行版本的元数据伪列。

这些信息可以显示数据库何时和如何发生特定的改变。

12.1  Oracle闪回版本查询行数据伪列

伪列

描述

VERSIONS_STARTSCN

VERSIONS_STARTTIME

行版本被创建时的SCNTIMESTAMP。这个伪列标识了最初拥有这个行版本的值的时候的时间。

使用这个值为闪回表或闪回查询确定过去的目标时间。

如果这个伪列为NULL,则行版本在start之前被创建。(使用startend确定一个时间范围)

VERSIONS_ENDSCN

VERSIONS_ENDTIME

行版本过期的SCNTIMESTAMP

如果为NULL,则表明行版本是在查询的时间为当前版本,或对应于删除操作的行。

VERSIONS_XID

标识创建行版本的事务

VERSIONS_OPERATION

事务执行的操作(I-INSERT D-DELETEU-UPDATE)。版本就是被插入、删除、更新的行。即插入和更新操作之后、删除操作之前的行。

对于索引键的用户更新,闪回版本查询会将一个UPDATE操作2个操作,即DELETEINSERT

 

给定的行版本从它的VERSIONS_START*开始到VERSIONS_END*一直有效。但不包括结束边界点。

t[VERSIONS_START*, VERSIONS_END*)

--表明从2003.09.09-2003.10.25日,salary一直是10243

VERSIONS_START_TIME     VERSIONS_END_TIME     SALARY

-------------------     -----------------     ------

09-SEP-2003               25-NOV-2003             10243

--闪回版本查询的典型应用

SELECT versions_startscn, versions_starttime, versions_endscn, versions_endtime, versions_xid, versions_operation, last_name, salary

  FROM employees

  VERSIONS BETWEEN TIMESTAMP

  TO_TIMESTAMP('2008-12-18 14:00:00', 'YYYY-MM-DD HH24:MI:SS')

  AND TO_TIMESTAMP('2008-12-18 17:00:00', 'YYYY-MM-DD HH24:MI:SS')

  WHERE first_name = 'John';

可以在闪回事务查询中使用VERSIONS_XID来定位事务的元数据,包括撤销行改变的SQL语句和产生这个改变的用户。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1169642/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/17013648/viewspace-1169642/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值