




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在Oracle 9i/10g中使用Flashback一、Flashback的概念在Oracle 9i数据库中,提出了数据闪回(Flashback)的概念。使用Flashback,可以在不对数据库进行不完全恢复的情况下,对某一个指定的表进行恢复。所谓Flashback就是使数据库中的实体显示或回到过去的某一时间点,这样可以实现对历史数据的恢复。二、在Oracle 9i中使用Flashback 在Oracle 9i中使用包DBMS_FLASHBACK来提供闪回功能。 如果需要用到闪回查询,必须在init.ora或者是spfile.ora中设置以下参数undo_management = auto (默认) 此外,参数undo_retention = n(秒),它决定了能往前闪回的最大时间(Undo最多的保存时间),越大的值,就会需要更多的Undo空间的支持。SQL show parameter autoSQL alter system set undo_retention=1200; (Undo信息将保持1200秒=20分钟)注意:Oracle 9i是每五分钟记录一次SCN的,并将SCN和对应时间的映射做个纪录。如果原来插入的记录到做闪回的时间在5分钟之内,用基于时间的flashback可能并查询不到记录,因为如果是基于时间点的查询,也是转化为最近的一次SCN,然后从这个SCN开始进行恢复,因此,如果需要精确的查询,我们可以采用基于SCN的flashback,它将能精确的闪回到需要恢复的时间。Oracle 9i的Flashback有如下限制。 采用时间点的恢复,不能精确到最近5分钟,如果需要更精确的查询,需要采用SCN。 不能flashback 5天以前的数据,这个并不是undo_retention所能决定的。 闪回查询无法恢复到表结构改变之前,因为闪回查询使用的当前的数据字典。 由于受到undo_retention的影响,对于undo_retention之前的时间,flashback不保证能成功 对于drop,truncate等不记录回滚的操作,flashback是无能为力的。例子:1 创建包DBMS_FLASHBACKSQL ?/rdbms/admin/dbmstran.sql2. 以system用户连接SQL conn system/oracle3. 获得当前的SCN和时间点SQL select dbms_flashback.get_system_change_number() from dual;DBMS_FLASHBACK.GET_SYSTEM_CHAN- 2324682SQL select to_char(sysdate, YYYY-MM-DD HH24:MI:SS) from dual;TO_CHAR(SYSDATE,YYYY-MM-DDHH2-2007-05-12 16:39:46SQL select * from scott.emp;4更新记录SQL update scott.emp set sal=888;SQL commit;5基于SCN和时间点查询修改前的情况SQL select * from scott.emp as of scn 2324682;SQL select * from scott.emp as of timestamp(to_timestamp(2007-05-12 16:39:46, yyyy-mm-dd hh24:mi:ss);6使用Flashback功能取消修改SQL execute dbms_flashback.enable_at_system_change_number(2324682);或者SQL exec dbms_flashback.enable_at_time(to_date(2007-05-12 16:39:46, YYYY-MM-DD HH24:MI:SS) (修改时的时间)SQL select * from scott.emp;注意:现在看到的只是闪回的结果,实际上并未恢复数据。且闪回状态下不能做DML操作。SQL delete scott.emp where empno=7369; (出错)SQL execute dbms_flashback.disable();SQL select * from scott.emp;三、在Oracle 10g中使用FlashbackOracle 10g的Flashback: 可以简单的利用查询语句实现flashback query,而不再需要象9i那样需要调用DBMS_FLASHBACK包 在基于时间上的flashback不再有5分钟的限制了,也可以象SCN一样进行精确的flashback query在Oracle 10g中,Flashback操作包括以下几个方面: Oracle Flashback Database(数据库闪回)这个特性允许你通过SQL语句FLASHBACK DATABSE语句,让数据库前滚到当前的前一个时间点或者SCN,而不需要做时间点的恢复。 Oracle Flashback Table(表闪回)这个特性允许你利用SQL语句FLASHBACK TABLE语句,确保回滚到表的前一个时间点。 Oracle Flashback Drop(删除闪回)Oracle 10g开始提供一个类似垃圾站的功能,来恢复不小心被drop的表 Flashback Query(查询闪回) Oracle Flashback Version Query利用保存的回滚信息,你可以看到特定的表在时间段内的任何修改,如电影的回放一样,你将了解表在该期间的任何变化 Oracle Flashback Transaction Query这个特性将确保您检查数据库的任何改变在一个事务级别。你可以利用它来诊断问题,性能分析和审计事务1查询闪回(Flashback Query)(10g新增)SQL conn scott/tigerSQL create table emp2 as select * from emp;SQL select to_char(sysdate, YYYY-MM-DD HH24:MI:SS) from dual;上面语句获取当前时间,如2007-05-12 13:22:33SQL select * from emp2;SQL delete from emp2;SQL commit;SQL select * from emp2 as of timestamp to_timestamp(2007-05-12 13:22:33, YYYY-MM-DD HH24:MI:SS); 注意:flashback query查询以前的一个快照点,并不改变当前表的状态2表闪回(Flashback Table)Oracle 10g的flashback table有如下特性: 在线操作 恢复到指定时间点或者SCN的任何数据 自动恢复相关属性,如索引,触发器等 满足分布式的一致性 满足数据一致性,所有相关对象将自动一致语法为: flashback table employee to scn 123456; flashback table t1 to timestamp to_timestamp(2003-03-03 12:05:00, YYYY-MM-DD HH24:MI:SS) enable triggers;其中enable triggers表示触发器恢复之后为enable状态,而默认为disable状态。 注意:如果需要flashback一个表,需要保证l 有flashback any table的系统权限或者是该表的flashback对象权限l 有该表的SELECT,INSERT,DELETE,ALTER权限l 必须保证该表ROW MOVEMENT例子:SQL alter table emp2 enable row movement;SQL flashback table emp2 to timestamp to_timestamp(2007-05-12 13:22:33, YYYY-MM-DD HH24:MI:SS);SQL flashback table emp2 to before drop rename to emp3;执行delete操作的表是可以恢复的,而执行truncate操作的表是不可以恢复的,这是因为flashback table利用undo进行的3删除闪回(Flashback drop)SQL drop table emp2;SQL show recyclwbinSQL flashback table emp2 to before drop;4数据库闪回(Flashback Database)闪回数据库可以迅速的使数据库回到误操作或人为错误的前一个时间点,如实际中的“撤消”操作,将可以不利用备份就快速地实现时间点的恢复。实际上,Oracle为了实现这一个功能,创建了另外一组日志,就是Flashback Logs(前滚日志),记录数据库的前滚操作。Flashback Database的前提条件:(1)数据库必须处于ARCHIVELOG模式(2)数据库必须具有flash recovery area,为此需要设置如下参数: DB_RECOVER_FILE_DEST:确定Flashback日志的存放地点 DB_RECOVER_FILE_DEST_SIZE:确定Flashback日志恢复区的大小 DB_FLASHBACK_RETENTION_TARGET:设定闪回数据的保存时间,单位是分钟。默认是1440分钟(一天)(3)对于RAC数据库,flash recovery area必须存储在集群文件系统或ASM内常见flashback database命令SQL flashback database to timestamp to_date(xxx);SQL flashback database to timestamp TO_TIMESTAMP (xxx);SQL flashback database to scn xxx;SQL flashback database to sequence xxx thread 1SQL flashback database to timestamp(sysdate-1/24)例子:(1)启用flashback log和归档模式SQL shutdown immediateSQL startup mount;SQL alter database archivelogSQL alter database flashback on;SQL alter database open;(2)获取当前的SCN SQL select current_scn from v$database; - 查看当前的SCNCURRENT_SCN-1237617 (3)模拟故障(截断scott.emp)SQL truncate table scott.emp; (4)完成FLASHBACK DATABASE(必须在mount状态下)SQL shutdown immediateSQL startup mount;SQL flashback database to scn 1237617;(5)使用resetlogs方式打开数据库SQL alter database open resetlogs;(6)测试flashback database是否成功SQL conn scott/tigerSQL select * from emp;5flash version queryflashback version query提供了一个审计行改变的功能,它能找到一段时间内(由undo_retention决定)所有已经提交了的行的记录。flashback version query一样依赖于AUM。flashback version query采用VERSIONS BETWEEN语句来进行查询,常用的有VERSIONS_SCN 系统改变号 VERSIONS_TIMESTAMP 时间戳SQL select versions_starttime, versions_endtime, versions_xid, versions_operation, sal from emp2 versions between timestamp minvalue and maxvalue order by versions_starttime;SQL select sal from emp2 versions between timestamp to_date(2007-05-12 23:00:33, YYYY-MM-DD HH24:MI:SS) and to_date(2007-05-12 23:05:33, YYYY-MM-DD HH24:MI:SS);说明1:列versions_starttime、versions_endtime、versions_xid、versions_operation 是伪列。其他伪列 如versions_startscn和versions_endscn 显示了该时刻的系统更改号。列 versions_xid 显示了更改该行的事务标识符。说明2:如果出现ORA-30052: invalid lower limit snapshot expression,是因为超过了undo_retention的范围。如果没有修改初始是900秒。6flashback transaction query flashback transaction query其实是flashback version query查询的一个扩充。 flashback version query可以审计一段时间内(由undo_retention决定)表的所有改变,但是也仅仅是能发现问题,对于错误的事务,没有好的处理办法。 但是,flashback transaction query从视图FLASHBACK_TRANSACTION_QUERY中获得事务的历史以及Undo_sql,也就是说,可以审计一个事务到底做了什么,甚至可以回滚一个已经提交的事务。例子:SQL conn scott/tigerSQL set time on23:30:37 SQL update emp2 set sal = 1000 where empno=7369; 23:32:21 SQL conn / as sysdba23:33:27 SQ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第十一课 多姿多彩的“我”说课稿-2025-2026学年小学心理健康人教版二年级上册-人教版
- 化肥厂原料验收登记制度
- 2025电子产品代理的销售合同书
- 江苏大学出版社《应用写作》说课稿-2023-2024学年中职中职专业课职业素养公共课程
- 建材买卖合同(卫浴洁具类)
- 教科版高中信息技术教案+教学设计
- 军训个人体会心得
- 2025年山西人民警察招聘考试申论题库含答案详解
- 2025年监理工程考试合同管理真题及答案
- 商场租赁合同范本及租赁保证金缴纳及退还流程
- 《浅析企业破产程序中债委会设立问题》6700字(论文)
- 燃煤机组深度调峰技术应用研究
- 房屋市政工程生产安全重大事故隐患排查表(2024版)
- 网络剧配音演员合同样本
- DB51T 1806-2014 林业治山调查规划设计技术规程
- 高压电缆迁改工程施工方案
- 管理患者期望
- 节前安全教育交底
- 研究开发项目(项目计划书、立项决议、项目结题书)模板
- 教师任现职以来主要工作业绩和履行岗位职责情况
- 有债务男方愿意承担一切债务离婚协议书范文
评论
0/150
提交评论