- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第14章 闪回技术 本章内容 闪回技术概述 闪回查询技术 闪回查询 闪回版本查询 闪回事务查询 闪回错误操作技术 闪回表 闪回删除 闪回数据库 本章要求 了解闪回技术 掌握闪回查询操作 掌握闪回版本查询操作 掌握闪回事务查询操作 掌握闪回表操作 掌握闪回删除操作 掌握闪回数据库操作 14.1 闪回技术概述 闪回基本概念 闪回技术分类 14.1.1 基本概念 Oracle 9i实现了基于回滚段的闪回查询(Flashback Query)技术,即从回滚段中读取一定时间内对表进行操作的数据,恢复错误的DML操作。 在Oracle 10g中,除提高了闪回查询功能,实现了闪回版本查询、闪回事务查询外,还实现了闪回表、闪回删除和闪回数据库的功能。 闪回技术是数据库恢复技术历史上一次重大的进步,从根本上改变了数据恢复。 采用闪回技术,可以针对行级和事务级发生过变化的数据进行恢复,减少了数据恢复的时间,而且操作简单,通过SQL语句就可以实现数据的恢复,大大提高了数据库恢复的效率。 14.1.2 闪回技术分类 闪回查询(Flashback Query):查询过去某个时间点或某个SCN值时表中的数据信息; 闪回版本查询(Flashback Version Query):查询过去某个时间段或某个SCN段内表中数据的变化情况; 闪回事务查询(Flashback Transaction Query):查看某个事务或所有事务在过去一段时间对数据进行的修改; 闪回表(Flashback Table):将表恢复到过去的某个时间点或某个SCN值时的状态; 闪回删除(Flashback Drop):将已经删除的表及其关联对象恢复到删除前的状态; 闪回数据库(Flashback Database):将数据库恢复到过去某个时间点或某个SCN值时的状态。 注意 闪回查询、闪回版本查询、闪回事务查询以及闪回表主要是基于撤销表空间中的回滚信息实现的; 闪回删除、闪回数据库是基于Oracle 10g中的回收站(Recycle Bin)和闪回恢复区(Flash Recovery Area)特性实现的。 为了使用数据库的闪回技术,必须启用撤销表空间自动管理回滚信息。 如果要使用闪回删除技术和闪回数据库技术,还需要启用回收站、闪回恢复区。 14.2 闪回查询技术 概述 闪回查询 闪回版本查询 闪回事务查询 闪回查询的机制 闪回查询是指利用数据库回滚段存放的信息查看指定表中过去某个时间点的数据信息,或过去某个时间段数据的变化情况,或某个事务对该表的操作信息等。 为了使用闪回查询功能,需要启动数据库撤销表空间来管理回滚信息。 与撤销表空间相关的参数包括 : ?UNDO_MANAGEMENT:指定回滚段的管理方式,如果设置为AUTO,则采用撤销表空间自动管理回滚信息; ?UNDO_TABLESPACE:指定用于回滚信息自动管理的撤销表空间名; ?UNDO_RETENTIOIN:指定回滚信息的最长保留时间。 14.2.1 闪回查询 闪回查询可以返回过去某个时间点已经提交事务操作的结果。 基本语法: SELECT column_name[,…] FROM table_name [AS OF SCN|TIMESTAMP expression] [WHERE condition] 基于AS OF TIMESTAMP的闪回查询 基于AS OF SCN的闪回查询 (1)基于AS OF TIMESTAMP的闪回查询 SQLALTER SESSION SET NLS_DATE_FORMAT=YYYY-MM- DD HH24:MI:SS; SQLSET TIME ON 09:12:50 SQLSELECT empno,sal FROM scott.emp WHERE empno=7844; EMPNO SAL -------------- 7844 1500 09:13:00 SQLUPDATE scott.emp SET sal=2000 WHERE empno=7844; 09:13:07 SQLCOMMIT; 09:13:12 SQLUPDATE scott.emp SET sal=2500 WHERE empno=7844; 09:14:28 SQLUPDATE scott.emp SET sal=3000 WHERE empno=7844; 09:14:41 SQL
文档评论(0)