11闪回查询之As of timestamp.docx

上传人:牧羊曲112 文档编号:3141238 上传时间:2023-03-11 格式:DOCX 页数:8 大小:38.69KB
返回 下载 相关 举报
11闪回查询之As of timestamp.docx_第1页
第1页 / 共8页
11闪回查询之As of timestamp.docx_第2页
第2页 / 共8页
11闪回查询之As of timestamp.docx_第3页
第3页 / 共8页
11闪回查询之As of timestamp.docx_第4页
第4页 / 共8页
11闪回查询之As of timestamp.docx_第5页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《11闪回查询之As of timestamp.docx》由会员分享,可在线阅读,更多相关《11闪回查询之As of timestamp.docx(8页珍藏版)》请在三一办公上搜索。

1、11闪回查询之As of timestamp全面学习oracle flashback特性(1.1)-闪回查询之As of timestamp个人分类:原创笔记 Flashback是ORACLE自9i就开始提供的一项特性,在9i中利用oracle查询多版本一致的特点,实现从回滚段中读取表一定时间内操作过的数据,可用来进行数据比对,或者修正意外提交造成的错误数据,该项特性也被称为Flashback Query。在10g中Flashback又得到了相当大的增强,利用回收站和闪回区的特性实现快速恢复删除表(Flashback Table)或做数据库时间点恢复(Flashback Database)的功

2、能。本文将分三个部分分别介绍!提示:关于flashback这个词的翻译呢,有很多:有叫回闪的,有叫闪回的。虽然三思个人认为相对来说闪回更通行一些,但在本系列文章中,我将坚持不做翻译,而直称为flashback。我觉着某些词汇不应做翻译,一方面是由于找不着合适的词来做转换,另一方面也有使用习惯的原因,比如oracle公司虽然大家都知道其中文名称叫甲骨文,但日常交流中大家都习惯说oracle就是这个道理。一、Flashback Query正如前言中所提,Flashback Query是利用多版本读一致性的特性从UNDO表空间读取操作前的记录数据!提示:什么是多版本读一致性Oracle采用了一种非常

3、优秀的设计,通过undo数据来确保写不堵塞读,简单的讲,不同的事务在写数据时,会将数据的前映像写入undo表空间,这样如果同时有其它事务查询该表数据,则可以通过undo表空间中数据的前映像来构造所需的完整记录集,而不需要等待写入的事务提交或回滚。flashback query有多种方式构建查询记录集(注意,要使用flashback的特性,必须启用自动撤销管理表空间,什么,你想问什么是自动撤销管理表空间?这个,说来话长啊请注意关注本篇外传),记录集的选择范围可以基于时间或基于scn,甚至可以同时查询出记录在undo表空间中不同事务时的前映象。用法与标准查询非常类似,要通过flashback qu

4、ery查询undo中的撤销数据,最简单的方式只需要在标准查询语句的表名后面跟上as of timestamp(基于时间)或as of scn(基于scn)即可。1、As of timestamp的示例:先创建一个很简单的表并插入一些记录用于测试:JSSWEB> create table jss_tb1 (id,vl) as2 select rownum,oname from(select substr(object_name,1,1) oname from dba_objects3 group by substr(object_name,1,1) order by 1)4 where ro

5、wnum<=20;已创建20行。JSSWEB> select * from jss_tb1;ID VL- -1 A2 B3 C4 D5 E6 F7 G8 H9 I10 J11 K12 L13 M14 N15 O16 P17 Q18 R19 S20 T已选择20行。删除几条记录并提交:JSSWEB> delete from jss_tb1 where id<10;已删除9行。JSSWEB> commit;提交完成。JSSWEB> select * from jss_tb1;ID VL- -10 J11 K12 L13 M14 N15 O16 P17 Q18 R19 S20

6、 T已选择11行。你看,这个时候jss_tb1表中id<10的记录均已被删除,假设过了一会儿你发现删除操作执行有误,仍需找回那些被误删的记录该怎么办呢?使用备份恢复?如果是在8i,恐怕是需要这样,自9i之后,使用flashback query的特性,我们可以很轻松的恢复记录(注意并不是任何情况下都可以恢复哟,后面会讲到制约flashback query的一些因素,我们这里举的都是理想条件下的例子),假设当前距离删除数据已经有5分钟左右的话:JSSWEB> select * from jss_tb1 as of timestamp sysdate-5/1440;ID VL- -1 A2

7、B3 C4 D5 E6 F7 G8 H9 I10 J11 K12 L13 M14 N15 O16 P17 Q18 R19 S20 T已选择20行。你看,我们通过增加as of timestamp的语法,就可以到undo表空间中查找到5分钟之前的记录前镜像,使用它我们就可以很轻易的并且迅速的将记录恢复:JSSWEB> insert into jss_tb12 select * from jss_tb1 as of timestamp sysdate-5/14403 where id<10;已创建9行。JSSWEB> commit;提交完成。JSSWEB> select * fro

8、m jss_tb1;ID VL- -10 J11 K12 L13 M14 N15 O16 P17 Q18 R19 S20 T1 A2 B3 C4 D5 E6 F7 G8 H9 I已选择20行。提示:as of timestamp|scn的语法是自9iR2后才开始提供支持,如果是9iR1版本,需要使用DBMS_FLASHBACK包来应用flashback query的特性。如上述示例中所表示的,as of timestamp的确非常易用,但是在某些情况下,我们建议使用as of scn的方式执行flashback query,比如需要对多个相互有主外键约束的表进行恢复时,如果使用as of timestamp的方式,可能会由于时间点不统一的缘故造成数据选择或插入失败,通过scn方式则能够确保记录的约束一致性。如何应用as of scn的方式查询undo数据呢?请继续关注后续连载

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号