- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安Oracle维护基地 来源:黑客防线网安Oracle维护基地 浏览次数:0 |
这是摘录自Damir Bersinic 和John Watson编着的《Oracle Database 10g OCP Certification All-In-One Exam Guide》一书中第29章内容,Oracle出版社copyright 2006,McGraw-Hill分公司。
在这章中你将会学到如何:
·使用回闪技术恢复被删除的表
·管理回收的二进制文件
·执行回闪表操作
·使用回闪版本查询从用户错误中恢复
·使用回闪事务查询执行事务级别的恢复
前面的章节介绍了回闪数据库,一种强大但是非常有个性的功能,相当于不完全恢复。这一章覆盖的内容是Oracle 10g数据库中可用的其它回闪技术。这些都不像回闪数据库那么极端,它们都不依赖于停机时间或者损失的数据量。它们是静态的,然而,也是通过撤销你不想要的修改提交来恢复错误的非常强大的技术。
这里讨论的回闪技术,首先,使回闪删除,可以通过使用DROP TABLE命令来激活和执行;第二,使用UNDO功能的不同方式:回闪版本查询,回闪表查询,以及回闪事务查询。
回闪和ACID测试
还记得第9章中描述的ACID测试吗。这是关系型数据库必须遵循的规则的一部分,对于理解回闪技术也是至关重要的:不论是它们的功能,还是它们的局限性。
所有的数据管理语言事务都是通过COMMIT或者ROLLBACK语句来结束的。到那个时候,因为事务已经执行了,出于Oracle实现的事务隔离的原则(ACID测试中的I),保证除了执行事务的会话之外,没有人能够看到进行的修改。
进一步讲,原子性的原则(ACID测试中的A)也保证了事务可以用ROLLBACK来终结这个事务,这可以将修改彻底地恢复过来;没有其它会话会知道进行了哪些修改。如果事务是以COMMIT终结的,那么修改就会立即被所有其它会话看到。惟一的例外情况就是任何出于读一致性原因(ACID测试中的C)的会话必须与这个修改相隔离。此外,一旦事务被提交了,那么数据库要丢失这个修改是决对不可能的;这就是ACID测试中的D,持久性。
在很多方式上,数据定义语言的命令都与其它的事务没什么两样。关系型数据库需要这样的规则,以保证经过提交的数据定义语言永远不会被翻转,所有的数据定义语言都是自动提交的。你对此无法进行控制;COMMIT是所有数据定义语言命令中很重要的一部分。
Flashback Drop提供了一种方式让你能够撤销DROP TABLE 命令的影响,但是不能保证它会成功。这要根据执行了DROP命令之后数据库中进行的其它活动。你可以使用各种回闪查询命令来翻转数据管理语言命令,但是,还要再一次强调的是,它是否成功取决于在这段时间内发生的其它活动。不可能回滚一个已经提交的事务,无论是数据管理员语言还是数据定义语言。ACID测试不允许这样。回闪技术依赖于构建另一个可以翻转最初事务影响的事务,但是这个新的事务有可能会失败,因为其它的,相反的已经被提交的修改。
回闪删除
意外删除了一个表是非常有可能发生的。不仅仅是你有可能因为输入错误而删除了错误的表;也有可能是正确的表,但是你连接了错误的计划,或者是登录到错误的环境中去。你可以减少这种可能性,通过设置你的SQL*Plus提示,例如: SQL> set sqlprompt "_user'@'_connect_identifier> "
SYSTEM@ocp10g>
贴士:要让所有的SQL*Plus会话都自动设置你的提示符,在glogin.sql文件中添加上述命令,在ORACLE_HOME/sqlplus /admin目录里。
回闪删除可以让你恢复前面一个被删除的表(但是不是截取表),就好像它被删除之前。所有的索引都会被恢复,还有所有的触发器和许可。Unique,主键,还有非空约束也都会恢复,但是外键约束无法恢复了。
测验:回闪删除只能应用于表上,但是所有相关的对象也都会被恢复,除了外键约束。
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |