flashback query
FLASHBACK 技术包括多个方面:flashback database,flashback drop,flashback query,flashback 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,….From table_name versions between scn?minvalue and maxvalue; ? Select? versions_xid,….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操作是通过临时表对需要闪回的表进行了删除和插入操作(删除所有数据并重新插入所有数据),因此可能发生行的位置改变。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |