現有環境說明:
一台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_單機-單機恢復完畢!