您现在的位置是:首页电子技术论文

ORACLE 10G RAC基于时间点的不完全恢复

发布时间:2013-01-14 09:40:38更新时间:2013-01-14 09:41:14 1

摘要:本文以公司管理和维护的一个全省社保数据库为例,探讨Oracle数据库的恢复策略和技术,特别是基于时间点的不完全恢复技术,并阐述其实现过程。

关键词:Oracle RAC数据库;RMAN工具;不完全恢复;基于时间点

对于保证数据库的安全来说,备份和恢复机制的应用一直被公认为是最为必须和重要的手段。但对于一般的用户来说,对备份工作的重视要远远大于恢复,甚至有的DBA从来就没有执行过恢复测试的操作,对于不完全恢复的了解更是非常缺乏。实际上,恢复工作是对备份工作的验证,不经过恢复测试的备份,很可能是无效的。因此,对数据库恢复的演练和测试是每一个DBA的重要责任。

一、 ORACLE RAC恢复概述

ORACLE 恢复有多种类别,下面分别加以介绍:

1、实例恢复(Instance Recovery)

实例恢复是指在RAC中,当一个实例崩溃,则幸存的实例将自动使用联机日志来前滚已提交的事务,撤销未提交的事务并释放锁。恢复的过程是由Oracle 自动完成,无需人工干预。

2、崩溃恢复(Crash Recovery)

指在单实例或多实例环境中所有的实例发生崩溃。在崩溃恢复中,实例必须首先打开数据库,然后执行恢复操作。一般而言,在崩溃或关机退出之后第一个打开数据库的实例将自动执行崩溃恢复。

3、介质恢复(Media Recovery)

介质恢复通常为响应介质故障并根据用户的命令来执行恢复。可以使用联机或归档日志来使数据库还原为最新或一个特定的时间点。介质恢复可以将整个数据库、一个表空间一个数据文件还原至指定的时间点。可细分为完全恢复和不完全恢复。

(1)完全恢复

使用归档、联机日志与数据库、表空间或数据文件等的备份结合使用以将其更新至最新的时间点,没有数据丢失。

(2)不完全恢复

使用归档、联机日志与数据库、表空间或数据文件等的备份结合使用以将其更新至过去的某个时间点或SCN等。

二、 RMAN不完全恢复

RMAN不完全恢复是指不完全的数据恢复,不完全恢复与完全恢复在许多方面是相同的,他们基本的命令集相同,但不完全恢复添加了一些其它命令。引起不完全恢复的原因有很多,如丢失了联机重做日志或归档的重做日志,或者出现重大的用户错误。 不完全恢复会影响整个数据库,也就是说,不能只对数据库的一部分执行不完全恢复操作,因为这样会使数据库的一部分具有与这个数据库其余部分不同的SCN和时间点,而导致数据库不能正常打开。

要将数据库数据还原到与数据库剩余部分不同的时间点,可以用基于表空间时间恢复或者flashback技术。

不完全恢复方法包括:基于时间,日志序列,SCN或取消的恢复。

1、基于时间点的恢复

这种恢复类型允许用户将数据库恢复到与指定时间一致的状态。当然,如果不存在能将数据库还原到用户请求的时间的有效备份或归档重做日志,Oracle 就会报RMAN-03002 和 RMAN-20207的错误。所以必须具备在我们指定的恢复时间之前生成有效的数据库备份,此外还需要归档所有的的重做日志。

2、基于日志序列的恢复

RMAN 允许用户将数据库恢复到指定序列号的归档重做日志。如果归档的重做日志中存在间隙,使用这种恢复方法就非常方便。间隙通常意味着我们只能将数据库还原到间隙的开始点。

3、基于SCN 的恢复

Oracle 允许用户将数据库恢复到指定的SCN,但这并不是一种常见的恢复方法。

三、基于时间点的不完全恢复

社保的系统由两台IBM750主机构成,安装Oracle RAC 10G 作为高可用的解决方案,下面的操作是在这套数据库中通过指定时间点来进行的不完全恢复。

1、确认RMAN已有数据库文件的备份

在RAC中的一台主机NODE1上登录,先进入oracle用户模式下,执行rman命令,查看已有的备份。

(1)确认已有指定时间点前控制文件的备份。

RMAN> list backup of controlfile;

(2)确认已有指定时间点前数据文件的备份。

RMAN> list backup of database;

2、进行指定时间点的不完全恢复

(1)分别关闭并重启两个实例到nomount状态

RMAN>shutdown immediate

RMAN>startup nomount

(2)restore控制文件,并指定需恢复时间点前的控制文件

RMAN> restore controlfile from ‘xxx’;

(3)在两实例分别加载数据库

RMAN> alter database mount;

(4)开始restore数据库文件

RMAN> restore database ;

(5)将数据库recover到误操作时间点

RMAN>recover database until time 'xxx';

(6)使用只读方式打开数据库

RMAN> sql 'alter database open read only';

(7)查看数据库被恢复表的内容

SQL>select * from xxx;

(8)在两实例分别关闭数据库并打开到加载状态

RMAN> shutdown immediate

RMAN> startup mount

(9)以resetlogs方式加载并打开数据库

在NODE1以resetlogs方式打开数据库

RMAN> sql 'alter database open resetlogs';

在NODE2打开数据库

RMAN>sql 'alter database open';

三、 总结:

Oracle数据库RMAN基于时间点的不完全恢复技术,在用户出现误操作(例如:误删除、误修改、误截断等)时,能够快速恢复数据到指定的时间。但这种技术目前正逐渐被更快速和高效的Oracle Flashback替代。然而,Flashback也具有局限性,比如一种情况是Flashback所能恢复的最早时间点受到Flashback log所记录的最早SCN的牵制,还有一种情况是当控制文件被恢复后,Flashback将不能使用。在以上几种情况下,RMAN基于时间点的不完全恢复技术仍将是数据恢复方法中最好的选择。

参考文献

[1] Oracle® Database Backup and Recovery Advanced User's Guide 10g Release 2 (10.2)

[2] Oracle® Database Oracle Clusterware and Oracle Real Application Clusters Administration and Deployment Guide 10g Release 2 (10.2)


转载请注明来自:http://www.yueqikan.com/dianzijishulw/19341.html