目录Windows平台下的恢复测试...........................................................................................................21.Oracle数据库恢复测试环境...........................................................................................22.恢复spfile文件................................................................................................................63.恢复控制文件...................................................................................................................84.恢复数据文件...................................................................................................................95.还原数据库.....................................................................................................................106.检验数据库一致性.........................................................................................................12Windows平台下的恢复测试1.Oracle数据库恢复测试环境操作系统主机名IpNBU(7.1)Oracle10gWindows7axelpc192.168.10.167MasterserverMediaserverWindows2003win2003192.168.10.170clientOracle源端Windows2003win2003test192.168.10.196clientOracle测试端Windows7上安装NBUMasterServer端,两个虚拟机上分别为源端和测试端,oracle版本为oracle10g,数据库实例名为test。整个恢复测试分为数据库的全备,数据库的spfile文件恢复,控制文件controlfile的恢复,恢复数据库和还原数据库。恢复前准备,做好远数据库端的数据库全备,查询清楚源端数据库的备份集信息,如下图,查询spfile文件的备份集信息,查询控制文件的备份集信息,在测试端安装好oracle的数据库软件和监听,不需要建立实例;在测试端建立好几个文件路径:E:\oracle\product\10.2.0\admin\test下建立adump、bdump、cdump、udump、dpdump和pfile文件夹;在E:\oracle\product\10.2.0下建立oradata和其子目录test文件夹。用oradim建立实例名前是登录rman会报如下错误,在命令行输入oradim的指令:oradim–NEW–SIDtest–STARTSTATUSauto,将会看到计算机的服务进程中增加一个OracleServertest的服务,若没这个服务数据库是登录不了的。Rman或者sqlplus进去需要先设置数据库实例,在命令行输入如下:setORACLE_SID=test然后登录如下,先sqlplus登录数据库,查看实例状态,再登录rman,如下图所示,rman登录后状态为DUMMY,未装载模式如下图所示,2.恢复spfile文件现在一起准备就绪,输入恢复脚本,在脚本中加入从备份集查询到的信息,如下:run{allocatechannelch01type'sbt_tape';allocatechannelch02type'sbt_tape'parms=ENV=(NB_ORA_CLIENT=win2003,NB_ORA_SID=test,NB_ORA_SERV=axelpc);restorespfileto'E:\oracle\product\10.2.0\db_1\dbs\spfiletest.ora'from'bk_u0ap2bbh9_s10_p1_t841330217';releasechannelch1;releasechannelch2;}解析:1.NB_ORA_CLIENT=win2003,NB_ORA_SID=test,NB_ORA_SERV=axelpc分别是源端主机名,数据库实例名,备份服务器的主机名2.E:\oracle\product\10.2.0\db_1\dbs\spfiletest.ora是spfile的文件路径3.bk_u0ap2bbh9_s10_p1_t841330217是spfile备份集的句柄,也可在NBU服务端查询,查询指令为:bplist-Ctest-t4–R\输出结果如下图,恢复成功之后可以看到如下显示,将恢复成功的spfile文件剪切到E:\oracle\product\10.2.0\db_1\database目录下,重新启动数据库3.恢复控制文件Sqlplus进入启动nomount状态:startupnomount;然后进入rman下运行如下脚本:run{allocatechannelch01type'sbt_tape'parms=ENV=(NB_ORA_CLIENT=test,NB_ORA_SERV=axelpc);restorecontrolfilefrom'cntrl_s6_p1_t841242205';releasechannelch01;}解析都一样,其中cntrl_s6_p1_t841242205是控制文件的备份集句柄。结果显示如下,4.恢复数据文件将数据库开启mount状态:alterdatabasemount;如下图示,然后在rman上运行如下脚本:run{allocatechannelch01type'sbt_tape';allocatechannelch02type'sbt_tape'parms=ENV=(NB_ORA_CLIENT=win2003,NB_ORA_SERV=axelpc);restoredatabase;releasechannelch01;releasechannelch02;}显示输出如下,5.还原数据库在rman输入如下脚本,run{allocatechannelch01type'sbt_tape';allocatechannelch02type'sbt_tape'parms=ENV=(NB_ORA_CLIENT=win2003,NB_ORA_SERV=axelpc);recoverdatabase;releasechannelch01;releasechannelch02;}显示rman输出如下,打开实例,在SQL端输入如下语句打开实例:alterdatabaseopenresetlogs;显示如下,6.检验数据库一致性查看两数据库的创建时间在源端和测试端SQL输入语句:selectcreatedfromv$database;显示的创建时间是一致的,结果如下图所示,查看两个数据库上的控制文件中记录的数据文件SCN号在数据库mount状态,用SQL查询恢复需要的归档日志序列号,下面语句查询控制文件中记录的数据文件SCN号。在SQL输入语句:selectcheckpoint_change#fromv$datafile;结果显示如下,由此可以看出两个数据库的数据文件是一致的,故两个数据库是一致的。至此,Windows下的ORACLE数据库恢复测试完成。