电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Oracle10gFlashback实践

9页
  • 卖家[上传人]:l****
  • 文档编号:133653352
  • 上传时间:2020-05-29
  • 文档格式:DOC
  • 文档大小:46.50KB
  • / 9 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、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 还要求必须启

      2、用了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

      3、timestamp的示例SQL create table tab_test as select rownum id from dba_users;SQL delete from tab_test where id commit;假设当前距离删除数据已经有3分钟左右的话:SQL select count(*) from tab_test as of timestamp sysdate-3/1440 where id insert into tab_test select * from tab_test as of timestamp sysdate-3/1440 where id commit;提示:as of timestamp|scn 的语法是自9iR2 后才开始提供支持,如果是9iR1 版本,需要使用DBMS_FLASHBACK包来应用flashback query 的特性。2、As of scn的示例如果需要对多个相互有主外键约束的表进行恢复时,如果使用as of timestamp 的方式,可能会由于时间点不统一的缘故造成数据选择或插入失败,通过scn 方式则能够确保记录的约束

      4、一致性。获取当前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 id5;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

      5、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 操作,版本查询可能会将其识别成两个操作DELE

      6、TE 和INSERT。SQL update tab_test set id=id+100 where id5;SQL commit;SQL delete tab_test where id 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

      7、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 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);注:

      8、由于事务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****分享,可在线阅读,更多相关《Oracle10gFlashback实践》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.