码迷,mamicode.com
首页 > 其他好文 > 详细

flashback query

时间:2015-02-16 18:27:40      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:oracle   flashback query   

FLASHBACK 技术包括多个方面:flashback databaseflashback dropflashback queryflashback table

其中flashbackdatabase利用的是闪回日志,flashback drop利用的回收站,flashback query flashbacktable 利用的是undo信息。Flashbackquery可以帮助我们确定在过去某个时间点或者时间段内表的数据是如何存储的,而flashback table则是帮助我们切切实实的将表闪回到过去的某个时间点。

 

Flashback query 是在oracle 9i时引入的的,为的是帮助我们查询在过去某个时间点某表的数据状态。语法格式为

Select * from table_name as of scnscn;

Select * from table_name as oftimestamp timestamp;

 

由于flashbackquery只可以查询过去某个时间点的信息,无法针对某一个时间段进行查询,因此在10g中,oracle引入了flashbackversion query,语法格式如下:

Select  versions_xid,versions_startscn,versions_endscn,versions_starttime,versions_endtime,….From table_name versions between scn startscn and endscn;

Select  versions_xid,versions_startscn,versions_endscn,versions_starttime,versions_endtime,….From table_name versions between scn minvalue and maxvalue;

 

Select  versions_xid,versions_startscn,versions_endscn,versions_starttime,versions_endtime,….From table_name versions between timstamp starttime and endtime;

需要注意的是,flashback version query不可以跨越ddl执行

 

除了flashbackversion query 外,oracle还为我们提供了flashback  transaction query,通过 flashback  transaction query 我们可以针对某一事务语句进行查询,获悉该事务所影响的表数据。语法格式如下:

 

Select * from flashback_transaction_query where xid = ??;

 

Flashback table 可以将表闪回的之前的某个状态,语法格式如下:

Flashbacktable table_name to scn scn;

Flashbacktable table_name to timestamp timestamp;

 

需要注意的是flashback table 同样不可以跨越ddl,但是如果我们仅仅是对表执行了添加列的ddl操作,那么我们是可以闪回到ddl之前的某个状态的,只是新添加的列取值全部为空。

 

Flashback table操作是通过临时表对需要闪回的表进行了删除和插入操作(删除所有数据并重新插入所有数据),因此可能发生行的位置改变。

flashback query

标签:oracle   flashback query   

原文地址:http://blog.csdn.net/yidian815/article/details/43852957

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!