ORACLEFlashbackQuery伪列-创新互联

<

金湖ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!p style="font-family:微软雅黑;font-size:14px;line-height:21px;white-space:normal;widows:auto;background-color:#FFFFFF;">     标准Flashback Query的功能是查询过去某个时间点对象中保存的记录信息,在当前时间与指定的过去某个时间点之间,对象可能做过多次修改,如果希望看到这期间的每一次修改,Oracle提供了Flashback Version Query。

    Flashback Version Query也是以SELECT子句的形式调用,其用法并不比AS OF复杂,与其类似,只需要在标准SELECT查询后面附加VERSIONS BETWEEN TIMESTAMP[/SCN] START AND END子句即可。通过VERSIONS BETWEEN能够查看指定时间段内UNDO表空间中记录的不同版本(注意,只包括被提交的记录)。记录在Version Query中可能会是一对多的关系,如某些记录如果被修改过多次并分别提交,那么在查询的时候,如果修改的操作是在指定的时间段(或SCN)内进行的,则记录每次修改的结果都会被显示出来,这倒是比较有利于我们对数据的修改进行对比,查看数据究竟是如何变化的。


    Version Query中提供了多个伪列,如表所示。

    表     Flashback Query中Version Query的伪列说明

VERSIONS_STARTSCN
VERSIONS_STARTTIME

该条记录操作时的SCN或时间,如果为空,表示该行记录是在查询范围外创建的

VERSIONS_ENDSCN

VERSIONS_ENDTIME

该条记录失效时的SCN或时间,如果为空,说明记录当前时间在当前表内不存在,或者已经被删除了,可以配合着VERSIONS_OPERATION列来看,如果VERSIONS_OPERATION列值为D,说明该列已被删除,如果该列为空,则说明记录在这段时间无操作

VERSIONS_XID

该操作的事务ID

VERSIONS_OPERATION

对该行执行的操作:I表示INSERTD表示DELETEU表示UPDATE

提示:对于索引键的update操作,版本查询可能会将其识别成两个操作:DELETEINSERT


相关知识点:

    什么是伪列?我们都知道在创建表时必须指定列名、列类型等信息,这些显式指定的列就是标准的列,在查询时这些列能够被SELECT语句显示出来。除此之外,还有一种列类型,这些列并不存在于表定义中,如你通过DESC TBLNAME查看时看不到这些列的定义,但通过SELECT语句却可以查询这些列的内容,这种列就是Oracle提供的伪列(如SYSDATE之类系统函数不是伪列)。

伪列也并不是在任何查询时都适用,有些列只有特殊的查询语句中才能够显示,如上述表格中提供的6列就仅在使用Versions Query时才能够调用。除此之外还有一些比较常用的ROWNUM、LEVEL等。


当前标题:ORACLEFlashbackQuery伪列-创新互联
网页地址:http://scyanting.com/article/dohdgg.html