暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

闪回查询

原创 不吃草的牛_Nick 2022-07-24
546

闪回查询依赖于回滚段中存储的数据前镜像,在Oracle 9i以前的版本中,通常只要事务提交后,前镜像数据就可以被覆盖,空间可以重用;在Oracle 9i中Oracle引入了自动回滚段管理(Automatic Undo Management,简称AUM)的新特性,在AUM模式下,我们可以通过调整 undo_retention 参数来设置数据库UNDO信息的保留时间,只要前镜像没有被覆盖,那么闪回就是可能的。

但是需要注意的是,UNDO信息的保留还同UNDO表空间中的可用空间有关,如果空间紧张,为了满足事务的需要,非活动的前镜像信息是可以被覆盖的。

可以使用SELECT语句的AS OF子句来进行闪回查询,具体语法如下:
as of scn ( timestamp) expr

通过关键词AS OF可以对表、视图、物化视图进行Flashback Query,可以指定SCN或者TIMESTAMP,其中TIMESTAMP是9i中引入的新的数据类型,精确到毫秒的时间单位。
select systimestamp from dual;
select count(*) from eygle as of timestamp (systimestamp -interval'10'second);

col scn for 999999999999999
select dbms_flashback.get_system_change_number scn from dual;
select count(*) from eygle as of scn 18995690000;


SCN与时间的映射及转换
col scn for 9999999999999
select dbms_flashback.get_system_change_number scn from dual;
select scn_to_timestamp(8908390522972) scn from dual;
select timestamp_to_scn(scn_to_timestamp(8039356)) scn from dual; 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论