测试环境:Windows Server 2003 Enterprise Edition SP2
数据库环境:Oracle 10.2
今天,我们一起来学习一下使用联机归档模式(ARCHIVELOG MODE)下的备份进行数据库异机恢复演练。如果不了解数据库运行的两种模式,可以查看之前的文档:RMAN备份与恢复(3)- 归档日志文件
在进行异机数据库恢复之前,我们需要先做几项前期工作:
1、记录下原数据库的DBID和SID,这是唯一性的。
2、将源数据库的服务器参数文件,拷贝到目标服务器上,即SPFILEsid.ora,但此步可以省略,可以通过第4步恢复的PFILE文件来重建SPFILE。
3、将恢复数据库需要的文件拷贝到目标服务器上。如备份文件,控制文件,备份时的当前联机归档日志文件。
4、在目标服务器上安装数据库,在这里,我们选择高级-企业版-仅安装数据库软件。
下面我们在目标服务器上演练如何进行数据恢复。
1、在目标服务器上配置oracle_sid,目标服务器上的实例名必须与源数据库的实例名同。
以下是以命令行窗口的方式创建数据库,并连接至新的数据库实例。
C:>ORADIM -NEW -SID sid
以下的sid代表的是你的数据库实例名,这必须记住的。
2、连接到该SID,进入RMAN。
C:>SET ORACLE_SID=sid
C:>RMAN TARGET/
3、设置数据库DBID,这个也必须与源数据库一致。
此时会报错,提示没有SPFILE,没关系,我们现在来通过CONTROL FILE来恢复PFILE文件。
4、恢复初始化参数文件,即PFILE文件。
5、因为我们是异机恢复,所以我们需要PFILE文档里的参数路径及目录名,打开上一步我们恢复的PFILE文档,即INITsid.ora文件。找到里面的所有有目录名的参数,按照该参数的路径及目录名,在新服务器磁盘上创建新文件夹。
6、以新恢复的 INITsid.ORA 文件将数据库启动至NOMOUNT 状态。
7、接下来,我们需要恢复控制文件并加载。
如果是恢复DATA GUARD的STANDBY备库数据的控制文件,则输入 RESTORE STANDBY CONTROLFILE FROM "备份的控制文件路径";这个是后话,以后我们再详细讲解。
8、恢复了控制文件,我们就可以将数据库启动到MOUNT状态了。
启动至MOUNT状态后,我们可以设置数据恢复到哪个SCN值,命令是SET UNTIL SCN=*******; 在这里,不设置该值,我们演练的是按归档日志文件来恢复数据库,可以把源数据库RMAN之后的所有归档日志文件都拷贝过来恢复。关于如何查看备份后的SCN值,文章片尾有彩蛋。。。
9、恢复数据库,如果目标服务器的备份存储的文件路径与源服务器备份时的路径不同,需要通过SET NEWNAME FOR DATAFILE命令来为数据文件重新设定路径。这里我们是源路径恢复。
10、最后,我们使用归档日志文件修复一下数据库,就差不多大功了。
此时会报错,提醒你恢复到一个未知SCN号,这是因为我们的归档日志文件只到ARC69990_0831504856。如果要避免这个错误,可以在ALTER DATABASE MOUNT 之后,通过SET UNTIL SCN或SET UNTIL TIME命令设置恢复到的SCN号或时间。
11、最最后,我们就可以打开数据库使用了。
在本次演练操中,出现个问题,就是拷贝归档日志文件时,少了当时备份时的归档日志文件,造成中途中断了。
如果造成中断后,再进行RMAN恢复时,先查看ORACLE数据库的实例服务是否已启动。如果未启动而进入RMAN会出现如下错误:
此时,我们先将实例服务进程启动,即可进入RMAN,然后,我们需要执行第6步操作,以新INITsid.ORA启动数据库至NOMOUNT状态下,接着跳过第7步,执行第8步,将数据库启动到MOUNT状态下,最后,跳过第9步,执行第10步使用RECOVER DATABASE修复数据。当然了,你还需要执行第11步,打开数据库嘀。。。
恢复完后,可别以为完事了,还有很多工作要做呢。
恢复完后,你会发现计算机管理-服务和应用程序-服务里没有TNSListener这一项目。
其实,我们重建侦听服务就可以了。
点击开始-ORACLE-配置与移植工具-Net Configuration Assistant,接着下一步就OK啦。
至于密码文件,我们可以从源数据库拷贝过来,也可以通过命令行进行重建。
如下命令是为SYS用户创建密码文件
C:>\ORAPWD FILE=D:\oracle\product\10.2.0\db_1\database\PWDsid.ora password=密码 entries=40
创建完毕后,查看一下初始化参数remote_login_passwordfile 控制密码文件的使用状态,NONE表示只要通过操作系统验证即可,不需要通过ORACLE密码文件验证;SHARED表示可以多个数据库实例使用此密码文件验证;EXCLUSIVE表示只有一个数据库实例可以使用此密码文件。
还有一点就是别忘记了修改数据库字符集哦。
至此,我们的RMAN异机恢复数据库的演练就此完毕了。操作过程和描述得很一般,让小伙伴们见笑了!!!
【彩蛋1 - 查看SCN号】
查看RMAN后当前联机重做日志的SCN号
SQL>SELECT * FROM V$LOG;
只要STATUS状态下的FIRST_CHANGE# 的值,其它的不要。
【彩蛋2 - 增量备份恢复数据库】
如果你使用的是增量备份恢复数据库,先选择最后一份1级或2级备份的控制文件来恢复PFILE文件及控制文件,接着 RESTORE DATABASE,程序会自动选择先恢复0级备份,再执行 RECOVER DATABASE 恢复1级或2级备份,接着RMAN会自动使用归档文件恢复日志的。