已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
oracle flashback详解 分类: rdbms 2011-01-25 17:05 430人阅读 评论(0) 收藏 举报 使用oracle数据库时,难免会碰到一些问题.例:1.如何回滚已经commit了的数据 2.如何查询已经被覆盖掉的数据update,或者被delete了的数据 3.如何将数据恢复到某个时间点 我们就可以使用flashback相关语句解决相关问题了关于flashback回闪:从9i到10g到最新的11.2g,oracle对flashback功能进行了进一步的扩展,利用flashback我们可做到1.flashback query闪回查询,并不实际修改表的数据2.flashback table闪回表格,可恢复表格的数据 3.flash database闪回数据库,可恢复db的数据:关于flashback query: 1.flash query通过undo数据表空间数据,利用一致性的方法来查找用户需要的数据 2.作用范围:查找指定时间点被(delete,update)的数据 只是做查找操作,如果设计恢复那么就要使用flashback table了 3.相关参数: 1.查询出来的数据存活时间受 undo_retention(默认为900秒)影响目标值,该变量(秒)可以影响undo表空间产生的data存活时间,时间一到,即死亡(消失) 2.闪回时间受undo表空间大小影响 关于undo表空间的操作,另一片文章会有讲解 3.查询的仅仅是快照,并不能修改当前状态 4.基本语法两种方式,使用时间片或scn号 使用时间片的情况比较多 1.select* from 你要查询表的名字 as of timestamp 查询某一时间该表的数据 2.select* from 你要查询表的名字 as of scn具体scn号 关于scn号,另一篇文章会讲解 4.原理: 简单的说就是将以前被修改,删除了的数据,通过开启flashback 模式,回到我们需要回到的时间来查看数据, 在undo_retention该变量设置的时间过后,该镜像数据会自动被清除.相当于查看的是一个镜像数据.一种方式是利用scn号来查看镜像数据,另一种是通过查找时间片来查询镜像数据 案例1:-创建测试flashquery表格 主要由scn号和系统日期组成 create table testquery( id number, scn number, time varchar2(20), mydate varchar2(20) );-插入测试数据begin for i in 1.16 loop insert into testquery values(i,dbms_flashback.get_system_change_number(),to_char (sysdate,yyyy-mm-dd hh24:mi:ss),你好|i); -插入scn号和sysdate为方便后续查询 commit; -如果不实时commit,那么会在循环完后,批量提交,时间点是一样的 dbms_lock.sleep(2); -使用dbms_lock.sleep 方法和java的thread睡眠是一个意思 参数以秒为单位 end loop;end;-查询未修改的数据 result:133035522011-01-25 11:51:33你好1 233035562011-01-25 11:51:35你好2 333035582011-01-25 11:51:37你好3 433035602011-01-25 11:51:39你好4 533035622011-01-25 11:51:41你好5 633035642011-01-25 11:51:43你好6 733035662011-01-25 11:51:45你好7 833035682011-01-25 11:51:47你好8 933035702011-01-25 11:51:49你好9 1033035722011-01-25 11:51:51你好10 1133035742011-01-25 11:51:53你好111233035762011-01-25 11:51:55你好12 1333035782011-01-25 11:51:57你好13 1433035802011-01-25 11:51:59你好14 1533035822011-01-25 11:52:01你好15 1633035842011-01-25 11:52:03你好16-查询最新的scn号类似于check point,该scn号在每次commit时,都会自动变化使用scn号来开启flashback query模式 select dbms_flashback.get_system_change_number from dual;result:3307628-该scn号可以理解成为一个check point点.我们可以借助这个标记来回退到该scn号查询当前的数据-修改第十条,和第十一条的数据:update testquery tq set tq.mydate=新年快乐 where scn=3303572;commit; update testquery tq set tq.mydate=万事如意 where scn=3303574;commit;select * from testqueryresult:133035522011-01-25 11:51:33你好1 233035562011-01-25 11:51:35你好2 333035582011-01-25 11:51:37你好3 433035602011-01-25 11:51:39你好4 533035622011-01-25 11:51:41你好5 633035642011-01-25 11:51:43你好6 733035662011-01-25 11:51:45你好7 833035682011-01-25 11:51:47你好8 933035702011-01-25 11:51:49你好9 1033035722011-01-25 11:51:51新年快乐1133035742011-01-25 11:51:53万事如意1233035762011-01-25 11:51:55你好12 1333035782011-01-25 11:51:57你好13 1433035802011-01-25 11:51:59你好14 1533035822011-01-25 11:52:01你好15 1633035842011-01-25 11:52:03你好16-使用scn号来进行闪回查询 1.不开启flashback模式,仅使用flashback query语句做查询select * from testquery as of scn 3307628result:133035522011-01-25 11:51:33你好1 233035562011-01-25 11:51:35你好2 333035582011-01-25 11:51:37你好3 433035602011-01-25 11:51:39你好4 533035622011-01-25 11:51:41你好5 633035642011-01-25 11:51:43你好6 733035662011-01-25 11:51:45你好7 833035682011-01-25 11:51:47你好8 933035702011-01-25 11:51:49你好9 1033035722011-01-25 11:51:51你好10 1133035742011-01-25 11:51:53你好111233035762011-01-25 11:51:55你好12 1333035782011-01-25 11:51:57你好13 1433035802011-01-25 11:51:59你好14 1533035822011-01-25 11:52:01你好15 1633035842011-01-25 11:52:03你好16 2.开启flashback模式做查询,整个db将会产生某个scn号所在时间点的镜像数据. 使用dbms包开启flashback模式:exec dbms_flashback.enable_at_system_change_number(3307628); 现在查看表的数据:select * from testquery as of scn 3307628;result:133035522011-01-25 11:51:33你好1 233035562011-01-25 11:51:35你好2 333035582011-01-25 11:51:37你好3 433035602011-01-25 11:51:39你好4 533035622011-01-25 11:51:41你好5 633035642011-01-25 11:51:43你好6 733035662011-01-25 11:51:45你好7 833035682011-01-25 11:51:47你好8 933035702011-01-25 11:51:49你好9 1033035722011-01-25 11:51:51你好10 1133035742011-01-25 11:51:53你好111233035762011-01-25 11:51:55你好12 1333035782011-01-25 11:51:57你好13 1433035802011-01-25 11:51:59你好14 1533035822011-01-25 11:52:01你好15 1633035842011-01-25 11:52:03你好16注:此时整个db为镜像数据. 如果单独再开启个链接,那么看到的还是真实数据而不是镜像数据; 如果中途要退出flashback模式请使用:exec dbms_flashback.disable;退出flashback 模式:exec dbms_flashback.disable;select * from testqueryresult:133035522011-01-25 11:51:33你好1 233035562011-01-25 11:51:35你好2 333035582011-01-25 11:51:37你好3 433035602011-01-25 11:51:39你好4 533035622011-01-25 11:51:41你好5 633035642011-01-25 11:51:43你好6 733035662011-01-25 11:51:45你好7 833035682011-01-25 11:51:47你好8 933035702011-01-25 11:51:49你好9 1033035722011-01-25 11:51:51新年快乐1133035742011-01-25 11:51:53万事如意1233035762011-01-25 11:51:55你好12 1333035782011-01-25 11:51:57你好13 1433035802011-01-25 11:51:59你好14 1533035822011-01-25 11:52:01你好15 1633035842011-01-25 11:52:03你好16 以上就是使用scn号来做闪回查询了;-使用时间点来进行闪回查询 select * from testquery as of timestamp to_timestamp(2011-01-25 13:25:55,yyyy-mm-dd hh24:mi:ss); 做此查询要确保没有对原有表结构进行修改,如果有的话可能引发异常;select * from testquery;result:133035522011-01-25 11:51:33你好1 233035562011-01-25 11:51:35你好2 333035582011-01-25 11:51:37你好3 433035602011-01-25 11:51:39你好4 533035622011-01-25 11:51:41你好5 633035642011-01-25 11:51:43你好6 733035662011-01-25 11:51:45你好7 833035682011-01-25 11:51:47你好8 933035702011-01-25 11:51:49你好9 1033035722011-01-25 11:51:51你好10 1133035742011-01-25 11:51:53你好111233035762011-01-25 11:51:55你好12 1333035782011-01-25 11:51:57你好13 1433035802011-01-25 11:51:59你好14 1533035822011-01-25 11:52:01你好15 1633035842011-01-25 11:52:03你好16关于scn号和这个timestamp的转换这个可能会出问题(undo表空间过小,无法查询到过早的数据) scntimestamp: select scn_to_timestamp(scn号) as ts from dual; timestampscnselect timestamp_to_scn(25-1月-11 01.05.29.046000 下午) from dual;:关于flashback table: 1.闪回表格,可将表格的数据闪回到某个时间点 2.需要开启行移动模式 enable row movement 3.原理:flashback table也是利用undo数据来恢复对象到指定时间点 4.使用范围:恢复当前表及其相关对象到某个时间点5.注意点: 1).闪回时间受参数undo_retention影响 2).闪回时间受undo表空间大小影响 3).和flashback query有差别,恢复表到以前的时间点 真实闪回,而不是镜像 6.语法: 1).flashback table table_name to timestamp . 根据时间点闪回 2).flash table table_name to scn . 根据scn号回退,实际操作基本上不会用到3).flashback table table_name to timestamp . enable triggers. 创建表,开启行移动模式,用的不多 4).flashback table testflashtable to timestamp systimestamp - interval 5 minute; 回退到几分钟之前,用的多例:将第一条数据更新,然后进行闪回表格,得到我们以前的数据;创建新的表格测试:create tabl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防猝死下载课件
- 分层展示课件
- 防尘口罩佩戴课件
- 妇产科创新介绍课件
- 9-10-Dioxo-9-10-dihydroanthracene-1-5-dicarboxylic-acid-生命科学试剂-MCE
- 6-Methoxydihydrosanguinarine-hydrochloride-生命科学试剂-MCE
- 粉尘防爆培训课件
- 蜂巢的介绍课件
- 粉尘病宣传课件
- 2026-2027学年初中心理健康七年级下册北京版第二节 寻求心理帮助课时测评卷
- 2.5 热传导 课件(内嵌视频)2026-2027学年科学五年级上册苏教版
- 小学体育一年级《动物王国运动会:模仿跳与趣味游戏》教案
- 德令哈环境实施方案
- 经销商满意度调查问卷
- 2026年纪检监察大数据及信息化监督练习题
- GA/T 2306-2024实体防护产品防护性能分类分级要求和试验方法
- 儿童心理行为健康评估与干预
- 小说结尾的类型课件
- 水利水电土建工程施工合同(GF-2000-0208)2025年修订版
- Unit4Digitallife语法课件-外研版八年级英语上册
- 数字乡村解决方案
评论
0/150
提交评论