现有环境说明:
一台WINDOWS2008R2:安装有NBU7.7.3,作为服务端
一台WINDOWS2008R2:安装有oracle11.2.0.3,作为数据库服务器
现假设数据库意外崩溃,需要进行恢复
前提环境搭建:
1、一台WINDOWS2008R2:安装有于原版本一致的数据库软件(不必安装实例),并安装nbu客户端,要求版本低于服务端
2、测试NBU服务端与新客户端的连通性
安装数据库软件:
1、添加本机hosts解析
2、解压并合并安装包
3、双击setup执行安装程序
源库目录查看方法,服务里查看OracleService+SID的服务,查看属性即可获知
安装完毕!
NBU客户端安装
添加hosts解析(服务端和客户端互添解析)
双击Browser执行安装程序
安装完成!
测试连通性:可通过测试备份客户端文件来测试连通性
在连通性正常的情况下,在客户端搜索备份集
执行搜索命令之前在服务端添加创建如下文件(允许异机恢复,不然搜索时回报错EXIT STATUS 135: client is not validated to perform the requested operation)
在客户端NBU家目录下执行命令bplist.exe -C oracle11g -t 4 -R \ 【其中oracle11g根据实际情况,填写源数据库系统解析名】
可以看出来,这里有两份备份
接下来利用命令创建数据库服务C:\app\Administrator\product\11.2.0\dbhome_1\BIN这个目录下执行
oradim -NEW -SID xxx 【xxx根据源库数据库SID来】
前期准备到此全部结束
接下来开始恢复(步骤中的个别实例名、路径等根据实际情况修改)
1、恢复spfile
方法一、根据其他数据库的pfile进行修改
方法二、拷贝源库SPFILE
方法三、rman恢复
这里使用方法一:
orcl.__db_cache_size=687865856 orcl.__java_pool_size=16777216 orcl.__large_pool_size=16777216 orcl.__oracle_base=‘C:\app\Administrator‘ #ORACLE_BASE set from environment orcl.__pga_aggregate_target=704643072 orcl.__sga_target=1023410176 orcl.__shared_io_pool_size=0 orcl.__shared_pool_size=268435456 orcl.__streams_pool_size=16777216 *.audit_file_dest=‘C:\app\Administrator\admin\orcl\adump‘ *.audit_trail=‘db‘ *.compatible=‘11.2.0.0.0‘ *.control_files=‘C:\app\Administrator\oradata\orcl\control01.ctl‘,‘C:\app\Administrator\fast_recovery_area\orcl\control02.ctl‘ *.db_block_size=8192 *.db_domain=‘‘ *.db_name=‘orcl‘ *.db_recovery_file_dest=‘C:\app\Administrator\fast_recovery_area‘ *.db_recovery_file_dest_size=4322230272 *.diagnostic_dest=‘C:\app\Administrator‘ *.dispatchers=‘(PROTOCOL=TCP) (SERVICE=orclXDB)‘ *.log_archive_dest_1=‘location=C:\app\Administrator\arch‘ *.log_archive_format=‘arc_%S_%T_%R.log‘ *.memory_target=1717567488 *.open_cursors=300 *.processes=150 *.remote_login_passwordfile=‘EXCLUSIVE‘ *.undo_tablespace=‘UNDOTBS1‘
内存大小根据实际修改,库名、路径根据实际修改
把此pifle考到新客户端中并启动
set ORACLE_SID=orcl rman target / RMAN>startup nomount pfile=‘C:\app\Administrator\pfile.ora‘;
2、恢复控制文件
run{ allocate channel c1 type sbt_tape; SEND ‘NB_ORA_SERV=test,NB_ORA_CLIENT=oracle11g‘; #这里的CLIENT为源机解析名 restore controlfile from ‘cntrl_p_t‘; release channel c1; }
启动到mount状态
3、恢复数据文件
这里有两种情况
一是数据文件路径不一致
二是数据文件路径一致
这里暂时先讨论一致的情况的恢复,(单机环境下恢复,路径基本与源库一致)
run{ allocate channel c1 type ‘sbt_tape‘; allocate channel c2 type ‘sbt_tape‘; SEND ‘NB_ORA_SERV=test,NB_ORA_CLIENT=oracle11g‘; restore database; release channel c1; release channel c2; }
4、recover数据库
reocver的方式有多种、这里按照追加到控制文件最新归档为止
run { allocate channel ch00 type ‘sbt_tape‘; allocate channel ch01 type ‘sbt_tape‘; SEND ‘NB_ORA_SERV=test,NB_ORA_CLIENT=oracle11g‘; recover database; release channel ch00; release channel ch01; }
直接写recover database他会 在恢复完所有归档的时候继续去请求下一个SCN,这时候你可以选择取消下个一个SCN的恢复
SQL> recover database using backup controlfile until cancel;
5、打开数据库
由于是恢复出来的数据库,要用以下命令打开
SQL> alter database open resetlogs;
6、临时表空间重建[这里针对的是源库与新库temp路径不一致的情况,一般一致情况下,启库时会根据记录的TEMP路径创建temp文件]
备份的时候不备份临时表空间所以恢复也就不恢复
查看新库的临时表空间,执行以下语句
SQL> select f.file#,t.ts#,f.name "File",t.name "Tablespace" from v$tempfile f,V$tablespace t where f.ts# = t.ts#;
我这里看到是在这个位置【注:这里查到的位置是之前源库临时表空间的位置】
接下来重建临时表空间
一、 create temporary tablespace TEMP2 TEMPFILE ‘C:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP02.DBF‘ SIZE 512M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED;
二、alter database default temporary tablespace TEMP2;
三、drop tablespace TEMP including contents and datafiles;
再次查看
至此,WINDOWS_FOR_NBU_ORACLE_单机-单机恢复完毕!
原文地址:https://www.cnblogs.com/zakker/p/12088042.html