关于Oracle闪回技术的应用研究分析 下载本文

内容发布更新时间 : 2024/6/24 19:26:29星期一 下面是文章的全部内容请认真阅读。

龙源期刊网 http://www.qikan.com.cn

关于Oracle闪回技术的应用研究分析

作者:夏月平

来源:《科学与财富》2011年第11期

[摘 要] 在日常数据库使用过程中,用户往往因为误操作,如delete、update,并最终提交了修改。一般发生这样的情况我们只能采用逻辑备份或者物理备份进行恢复来纠正这样的错误,而这种方法极其复杂并且低效。但是从oracle 9i开始,逐渐引入了闪回的概念。利用该技术使数据恢复的方式和手段更加丰富,操作更加简易。 中图分类号:TP311 文献标识码:A 1、引言

Oracle数据库是世界上最流行的关系数据库之一。但是在Oracle 数据库中发生逻辑故障(人为错误)时,过去传统的方法是通过逻辑备份或者物理备份进行恢复以纠正错误,这种方法是极其复杂和低效的。从Oracle 9i开始引入了闪回技术,使用闪回技术,能够快速而方便的恢复数据。它允许用户查看过去某点的数据状态,而不需要更改任何的数据库结构。 2、闪回技术基础 2.1闪回数据库

闪回数据库可快速地将某个Oracle数据库倒回至以前的时间,以便纠正由逻辑数据损坏或用户错误造成的任何问题。类似于按下数据库的倒带按钮,以当前数据库为起点,按照从后向前的时间顺序倒退所有的工作变化,最终的结果就像执行不完全恢复一样。闪回数据库就像数据库的“倒退按钮”。如将整个数据库闪回到2010年10月10日00:00:00: FLASHBACK database to to_timestamp(‘2010-10-10 00:00:00’,YYYY-MM-DD HH:MI:SS) 2.2闪回删除

用户删除表时,Oracle 会自动将其放入“回收站”。基于回收站,闪回删除的实现非常简单。如以下命令可以恢复被误删得员工收入统计表EmployeeStats。 Flashback table EmployeeStats to before drop 2.3闪回表

龙源期刊网 http://www.qikan.com.cn

当发生人为错误或应用程序错误时,闪回表可以使用户在线将一个或一组表快速轻松并联机恢复到指定时间点。闪回表可在恢复表的同时自动保留其相关属性,如当前索引、触发器和限制。闪回表能够缓解执行更为复杂的时间点恢复操作。以下命令将员工表Employees及部门表Dept闪回到2010年7月1日下午 2:33。

FLASHBACK TABLE Employees,Dept TO TIMESTAMP (JUL-07-2010,02:33:00) 2.4闪回查询

闪回查询,由一个新的包DBMS_FLASH来实现。用户使用闪回查询可以及时取得误操作前某一时间点数据库的映像视图,用户可以利用系统时间或系统改变号来指定这个只读视图,并可以针对错误进行相应的恢复措施。此类恢复撤销数据,通过查询撤销数据把修改前的数据恢复回来。它所有的变化形式都依赖于撤销段的使用。 2.5闪回版本查询

闪回版本查询提供了审核表的行并检索有关更改行事务处理信息的方法。它检索所有提交的行版本,这些行位于或曾经位于发布查询的时间和过去某一时间点之间。它通过利用自动撤消管理完成此项操作。

闪回版本查询是SQL的扩展,可用于在指定表中检索不同行的版本,此表存在于特定时间段内。对于任一指定的表,每次执行COMMIT语句时,都会创建一个新行版本。闪回版本查询返回存在于指定时间段内的每个行版本的行。 3、应用实例

让我们来仔细研究一下使用回闪技术工具来执行自助服务维修的一个实例,即无需管理员参与就可从人为错误中恢复数据。

Lisa是软件开发组的经理,他们的产品销售良好。Lisa决定对所有具有超过2年的经验和等级为3的员工,薪酬提高10%并将其等级提升为4级。Lisa让她的HR代表Bob来进行这些更改。

Bob使用他们的HR Web应用程序来更新公司数据库,以将Lisa组中等级为3的员工的薪酬提高10%并将其等级提升为4级。就在Bob按下“提交”按钮时,才意识到他遗漏了2年经验这个要求。现在Bob该怎么做?

Bob可以通过执行以下命令来回退表至其进行错误更改之前:

FLASHBACK TABLE employee TO TIMESTAMP (systimestamp- interval'5' minute);

龙源期刊网 http://www.qikan.com.cn

之后,在下午5点.,Lisa决定给Joe额外提高5%,作为组中明星员工的奖励,并让Bob执行此更新。Bob向Lisa汇报说Joe的记录丢失了。然后Lisa和Bob执行闪回版本查询来查明Joe的记录发生了什么事。

SELECT versions_starttime, versions_operation, sal from employee VERSIONS BETWEEN MINVALUE AND MAXVALUE where name=‘JOE’;

结果显示Joe的记录在下午4点后被删除了。使用闪回查询,Bob发现了丢失的Joe的员工数据。

INSERT INTO employee SELECT * FROM employee AS OF TIMESTAMP

TO_TIMESTAMP(’2010-07-18 15:30:00’,‘YYYY-MM-DD HH24:MI:SS’) WHERE name=‘JOE’; 另外如果他们发现EMPLOYEE表中有许多其他错误,则可通过使用如下所示的闪回表将整个表恢复至16:00时的状态:

FLASHBACK TABLE employee TO TIMESTAMP TO_TIMESTAMP(’2003-07-18 16:00:00’, ‘YYYY-MM-DD HH24:MI:SS’);

按照所示,Bob重新执行Lisa所需的两套更新。 4、总结

经过对大量的停机原因研究发现,人为错误是导致停机的最大原因。人为错误包括:误删除重要数据,UPDATE语句中不正确的WHERE子句更新了比预期更多的数据等。我们需要尽可能的防止人为错误,当预防措施失败后,要能够撤消以前操作并恢复数据,数据库闪回功能,在人为错误修正上取得了突破。闪回是让管理员“倒回”数据库上的活动的一项功能。利用闪回技术,更正错误的时间与错误发生的时间几乎相同。它非常易用,使用一条短命令便可恢复整个数据库,而不必执行复杂的操作步骤,大大提高了数据安全性和完整性。■ 参 考 文 献

[1]蔡立军,等,Oracle 9i关系数据库实用教程【M】。北京:中国水利水电出版社,2004 [2]盖国强,Oracle书库库管理优化与备份恢复[M]。北京:人民邮电出版社,2007 [3]纪贤标,Oracle 10g闪回技术及实现【J】。集美大学学报,2006 作者简介:

夏月平(1978-),女,江苏人 南京信息职业技术学院教师 硕士