电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOC文档下载
分享到微信 分享到微博 分享到QQ空间

Oracle10gFlashback实践

  • 资源ID:133653352       资源大小:46.50KB        全文页数:9页
  • 资源格式: DOC        下载积分:20金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要20金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

Oracle10gFlashback实践

Oracle10g Flashback 实践2008-11-21 16:52一、概述环境:RHEL4.5,oracle10.2.0.1Flashback 是ORACLE 自9i 就开始提供的一项特性,在9i 中利用oracle 查询多版本一致的特点,实现从回滚段中读取表一定时间操作过的数据,可用来进行数据比对,或者修正意外提交造成的错误数据,该项特性也被称为Flashback Query。在10g 中Flashback又得到了相当大的增强,利用Recycle Bin(回收站)和Flash Recovery Area(闪回区)的特性实现快速恢复删除表(Flashback Table)或做数据库时间点恢复(Flashback Database)的功能。要使用flashback 的特性,必须启用自动撤销管理表空间,不仅是flashback query,也包括flashback table 和flashback database,而对于后两项还会有些其它的附加条件,比如flashback table 需要启用了recycle bin(回收站),flashback database 还要求必须启用了flashback area(闪回区)。SQL> show parameter undoNAME TYPE VALUE- - -undo_management string AUTOundo_retention integer 10800undo_tablespace string UNDOTBS1在一种情况下,undo 表空间能够确保undo 中的数据在undo_retention 指定时间过期前一定有效,就是为undo 表空间指定Retention Guarantee,指定之后,oracle 对于undo 表空间中未过期的undo 数据不会覆盖,例如:SQL> Alter tablespace undotbs1 retention guarantee;如果想禁止undo 表空间retention guarantee,如例:SQL> Alter tablespace undotbs1 retention noguarantee;二、Flashback Query(闪回查询)Flashback Query 是利用多版本读一致性的特性从UNDO 表空间读取操作前的记录数据!1、As of timestamp的示例SQL> create table tab_test as select rownum id from dba_users;SQL> delete from tab_test where id<5;SQL> commit;假设当前距离删除数据已经有3分钟左右的话:SQL> select count(*) from tab_test as of timestamp sysdate-3/1440 where id<10; SQL> insert into tab_test select * from tab_test as of timestamp sysdate-3/1440 where id<5; SQL> commit;提示:as of timestamp|scn 的语法是自9iR2 后才开始提供支持,如果是9iR1 版本,需要使用DBMS_FLASHBACK包来应用flashback query 的特性。2、As of scn的示例如果需要对多个相互有主外键约束的表进行恢复时,如果使用as of timestamp 的方式,可能会由于时间点不统一的缘故造成数据选择或插入失败,通过scn 方式则能够确保记录的约束一致性。获取当前scn 的方式非常多,比如:SQL> select current_scn from v$database;SQL> select dbms_flashback.get_system_change_number from dual;GET_SYSTEM_CHANGE_NUMBER- 191460SQL> delete tab_test where id>5;SQL> commit;SQL> select * from tab_test as of scn 191460;SQL> insert into tab_test select * from tab_test as of scn 191460 where id not in (select id from tab_test);SQL> commit;事实上,Oracle 在部都是使用scn,即使你指定的是as of timestamp,oracle 也会将其转换成scn,系统时间标记与scn 之间存在一表,即SYS 下的SMON_SCN_TIME。SQL> select scn,to_char(time_dp,yyyy-mm-dd hh24:mi:ss) time_dp from sys.smon_scn_time;3、Versions between版本查询功能更加强大,通过versions between 能够查看指定时间段undo 表空间中记录的不同版本(注意只包括被提交的记录)。版本查询过程中提供了多个伪列如下:VERSIONS_STARTSCN/VERSIONS_STARTTIME 记录操作时的scn 或时间,如果为空,表示该行记录是在查询围外创建的。VERSIONS_ENDSCN/VERSIONS_ENDTIME 记录失效时的scn 或时间,如果为空,说明记录当前时间在当前表存在,或者已经被删除了,可以配合着VERSIONS_OPERATION 列来看,如果VERSIONS_OPERATION 列值为D,说明该列已被删除,如果该列为空,则说明记录在这段时间无操作。VERSIONS_XID 该操作的事务IDVERSIONS_OPERATION 对该行执行的操作:I 表示insert,D 表示delete,U 表示update。提示:对于索引键的update 操作,版本查询可能会将其识别成两个操作DELETE 和INSERT。SQL> update tab_test set id=id+100 where id>5;SQL> commit;SQL> delete tab_test where id<5;SQL> commit;SQL> insert into tab_test values (888);SQL> commit;SQL> select dbms_flashback.get_system_change_number from dual;GET_SYSTEM_CHANGE_NUMBER- 191611SQL> select id,VERSIONS_XID,versions_startscn,to_char(VERSIONS_STARTTIME,yyyy-mm-dd hh24:mi:ss) VERSIONS_STARTTIME,versions_endscn,to_char(VERSIONS_ENDTIME,yyyy-mm-dd hh24:mi:ss) VERSIONS_ENDTIME,versions_operation from tab_test versions between scn 191460 and 191611 order by 3;4、Transaction query事务查询SQL> select dbms_flashback.get_system_change_number from dual;GET_SYSTEM_CHANGE_NUMBER- 192329SQL> delete tab_test where id<3;SQL> rollback;SQL> delete tab_test where id=5;SQL> commit;SQL> select dbms_flashback.get_system_change_number from dual;GET_SYSTEM_CHANGE_NUMBER- 192377SQL> select xid,commit_scn,commit_timestamp,operation,undo_sql from flashback_transaction_query q where q.xid in( select versions_xid from tab_test versions between scn 192329 and 192329);注:由于事务ID 是保存在版本查询中,因此我们需要通过版本查询来关联出flashback 的事务信息,这也是前面操作前要通过dbms_flashback 包取scn 的原因。5、DDL的影响修改并提交过数据之后,对表做过DDL 操作,包括:drop/modify 列, move 表, drop 分区(如果有的话), truncate table/partition,这些操作会另undo 表空间中的撤销数据失效,对于执行过这些操作的表应用flashback query 会触发ORA-01466 错误。另外一些表结构修改语句虽然并不会影响到undo 表空间中的撤销记录,但有可能因表结构修改导致undo 中重做记录无法应用的情况,比如对于增加了约束,而flashback query 查询出的undo 记录已经不符合新建的约束条件,这个时候直接恢复显然不可能成功,你要么暂时disable 约束,要么通过适当逻辑,对要恢复的数据进行处理之后,再执行恢复。另外,flashback query 对v$tables,x$tables 等动态性能视图无效,不过对于dba_*,all_*,user_*等数据字典是有效的。同时该特性也完全支持访问远端数据库,比如:select * from tbldblink as of scn 360; 的形式。三、Flashback Table(闪回表)1、从RECYCLEBIN中恢复要恢复recyclebin 中的表,注意语句如下:Flashback table objName to before drop,这个obj_name 即可以是表名,也可以是recyclebin 中的对象表(支持同时操作多个表,表名之间以逗号分隔即可,要记住单个flashback table 是在同一个事务中,因此这些表的恢复操作要么都成功要么都失败),由于该项功能是恢复被删除表,因此官方对其还有另外一称谓:flashback drop。系统参数recyclebin默认是on,即启用了回收站功能,可以在session或sys

注意事项

本文(Oracle10gFlashback实践)为本站会员(l****)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.