APP下载

Oracle闪回技术在数据恢复中的应用*

2010-08-14曾传军傅秀芬彭小玲

网络安全与数据管理 2010年16期
关键词:回收站事务设置

曾传军,傅秀芬,彭小玲,许 金

(广东工业大学 计算机学院,广东 广州510006)

Oracle数据库是世界上最流行的关系数据库之一。由于它的系统可移植性好、使用方便、功能强,在国内外企事业单位中应用广泛。本文介绍了Oracle闪回技术,它最大的特点是能实现自动备份,有效减少管理开销。数据库发生故障具有随机性,大多数情况下没有事先人为备份,这时就可以利用闪回技术快捷方便地恢复数据。从Oracle 9i推出闪回查询(Flashback Query)特性,到Oracle 10g闪回技术得到了进一步的发展。随着闪回功能不断扩充和加强,新的应用也大量出现在系统管理中。

1 Oracle 9i闪回技术的数据恢复

1.1 Oracle 9i闪回技术原理

在Oracle 9i中,闪回技术确切地说是闪回查询(Flashback Query)。闪回查询可以按照时间戳或SCN向前查询,获取回滚段(undo)中的数据镜像。自动回滚段管理(AUM)是Oracle 9i引入的新特性,闪回查询必须依赖于它。之前的Oracle数据库版本,在事务提交后,段中的数据镜像是可以被覆盖的。而现在可以在自动回滚段管理模式下调整参数UNDO_RETENTION设置数据库UNDO信息的最大可以闪回查询的时间段,只要在这个时间范围内数据镜像没有被覆盖,数据被恢复的可能性是比较大的,就算不能完全恢复,也至少可以恢复到某个时间点比较好的状态[1-3]。同时,UNDO信息被覆盖也跟UNDO表空间的存储空间大小有关。

闪回查询在使用前,数据库要处于Automatic Undo Management状态。

最大可以闪回查询的时间段可以在UNDO_RETENTION参数(单位为秒)中设置。

Oracle 9i是基于时间点的闪回,需要查询SCN或时间戳。若要获得当前的SCN必须确保用户对DBMS_FLASHBACK包有执行的权限:grant execute on dbms_flashback to User[4-6]。除了查询SCN估算向前进行查询,还可以根据事务提交时间估算向前推移查询。由于一个数据库系统表SMON_SCN_TIME构建了SCN→TIME的跟踪关系,而且不同实例只能维护一个SCN→TIME的映射关系。数据库通过后台监控进程SMON每隔5分钟更新一次表,记录一次时间戳和当前的SCN。此表总共能记录保存1 440条记录,相当于5天的信息。

1.2数据恢复应用

下面从一个误操作实例看Oracle 9i闪回技术是如何恢复数据的。在用户GERENZHULI下复制一张表:create table test as select*from relation。初始时 test表有9个用户记录,由于疏忽删除几条数据记录,现将其还原。

(1)误操作之后,查询当前的数据记录为5条。

(2)查询获得当前的SCN。

(3)为数据恢复创建一张表 test_for_recov,供数据闪回时插入记录。

表已创建。

(4)选择一个比当前小的SCN,向前恢复数据,多次尝试SCN值,以获得满足自己需要的数据状态。

(5)从上面SCN的尝试,利用闪回技术恢复数据,将数据插入到表test_for_recov。

至此,将数据恢复到了误操作之前的状态。

2 Oracle 10g闪回技术的数据恢复

2.1参数设置

Oracle 10g闪回技术主要包括闪回数据库﹑闪回表﹑闪回删除﹑闪回查询﹑闪回版本查询和闪回事务查询[2,5]。使用闪回技术前,首先设置闪回恢复区的位置参数db_recovery_file_dest;其次设置闪回的最大时间限制参数db_flashback_retention_target;再把数据库设置为归档模式:alter database archivelog。如没有这个设置,在将数据库打开为Flashback模式时会出现ORA-38706错误。在以上所有的设置完成之后,关闭数据库后又重启到Mount状态下,使用命令alter database flashback on改变数据库模式为闪回状态。

2.2 Oracle 10g闪回技术应用

(1)闪回数据库

闪回数据库(Flashback Database)是 Oracle 10g新增的功能。Oracle 10g闪回数据库功能启用后,数据库会定期将发生变化的数据块的前镜像写入闪回日志的日志文件中,这些日志文件并不是传统的LGWR进程写入的,而是由一个新进程RVWR写入。

下面看一下闪回数据库功能恢复数据库实例。

①查询数据库的闪回状态。

②连接到用户scott下,新建一张表customer并插入12条数据,之后把数据从表中截断,截断前的时间查询到(2010-03-27 20:59:16)为 止,查 询 截 断 后 的 表 数 据 信息和当前的时间

表中数据已被截断,查询信息被删除后的时间:

③关闭数据库并重启到Mount状态,用flashback database将数据库闪回到时间点(2010-03-27 20:59:16)SQL>flashback database to timestamp to_timestamp('2010-03-27 20:59:16','yyyy-mm-dd hh24:mi:ss');

Flashback complete

④闪回恢复后,再打开数据库实例时,需要使用参数 resetlogs或 noresetlogs:

经查询,表的数据已恢复。

(2)闪回表

闪回数据库可以将整个数据库恢复到指定的时间点。但用户只希望对指定的表进行恢复,Oracle 10g提供了闪回表(Flashback Table)功能,可以将指定表中的数据﹑索引﹑触发器等恢复到指定的SCN或时间点。由于flashback table技术使用DML操作恢复数据,不能保证Rownum不变,所以在闪回之前先执行alter table Tablename enable row movement,后 flashback table Tablename to timestamp|scn<timestamp|scn>。

(3)闪回删除

Oracle 10g闪回删除(Flashback Drop)功能可以从数据库中恢复一个被删除的对象。在执行删除(Drop)操作时,并不是真删除,而是将该对象放入回收站(RecycleBin)中,并将对象重命名。这个回收站是虚拟出来的,被删除的对象在其上也占用删除前的存储空间,甚至可以查询被删除的对象,也可以用Flashback Drop恢复[7-8]。其原理如图1所示。

下面分析闪回删除的使用。

要清除回收站所有的对象,可以使用purge recyclebin;要彻底删除表,不想将它放入回收站可以这样删除表:drop table Tablename purge。

(4)闪回版本查询(Flashback Version Query)和闪回事务查询(Flashback Transaction Query)。

Oracle 9i闪回查询只能得到过去某个时间点的数据版本,由于当前时间与过去某个时间之间,一个表中的数据可能被更新多次,一个时间点的数据版本可能无法满足恢复需要。Oracle 10g通过闪回版本查询可以查询不同时间点的不同版本数据。它只能查询提交后的数据。建立表 test11,并在其上进行数据 insert﹑delete﹑update操作并提交,而后查询数据的版本信息。

在闪回版本查询的基础上,就可以进行闪回事务查询(Flashback Transaction Query)恢复。闪回事务的历史信息以及Undo_SQL保存在FLASHBACK_TRANSATION_QUERY表中。查询该表的Undo_SQL,使用UNDO语句就可以撤消事务。

本文分别介绍了数据库Oracle 9i和10g闪回技术在恢复数据的应用。根据上面的应用分析,Oracle 9i与Oracle 10g闪回技术对比如表1所示。

表1 Oracle 9i与Oracle 10g闪回技术对照表

从对比中可以看到,闪回处理手段Oracle 10g比Oracle 9i灵活﹑快捷﹑实用、安全。这一技术在数据恢复上具有诸多优点,在以后的学习研究领域中还有待扩展。

[1]盖国强.Oracle数据库管理﹑优化与备份恢复[M].北京:人民邮电出版社,2007:226-365.

[2]THOMAS K.Expert Oracle database architecture 9i and 10g programming techniques and solutions[M].USA:Apress Expert.2005.

[3]QUN Li,HONG Lin Xu.Research on the backup bechanism of oracle database[J].IEEE Computer Soc:2009(2):423-426.

[4]王晨,胡艳,宣海荣.Oracle10g新特性 Flashback探究[J].计算机时代:2007,25(7):58-59.

[5]MATTBEW H,SCOTT J.Oracle database 10g高可用性实现方案-运用 RAC、Flashback和 Data Guard技术[M].刘永健,孔令梅,译.北京:清华大学出版社,2005.

[6]JOHNSON J.Ready to recover[J].Oracle Magazine:2003,17(5):85-88

[7]Oracle 官方网.Oracle flashback technology[EB/OL].http://www.oracle.com/technology/deploy/availability/htdocs/Flashback_Overview.htm.

[8]KUNDERSMA R.Feature enthusiasm:Oracle flashback database[EB/OL].http://blogs.oracle.com/XPSONHA/2009/07/feature_enthusiasm_oracle_flas.html:2009/7/31.

猜你喜欢

回收站事务设置
基于分布式事务的门架数据处理系统设计与实现
中队岗位该如何设置
船舶防火结构及设置的缺陷与整改
能量回收站
河湖事务
神奇裁缝最省布
Windows 10回收站问题巧解决
基于OCC-DA-MCP算法的Redis并发控制
中俄临床医学专业课程设置的比较与思考
旧衣回收