使用RMAN對資料庫進行異機還原

shilei1發表於2012-07-29
系統環境:
作業系統:Window2000 +
Oracle版本: 9.0.1.1.1
RMAN恢復目錄的機器:catalog
已損壞的資料庫主機為:old_host
要還原到的資料庫主機為:new_host
 
使用RMAN對已損壞資料庫進行異機還原的前提條件:
1、  old_host上的資料庫已使用RMAN進行了備份
2、  old_host上的資料庫的PFILE或SPFILE已做了備份
3、  catalog上的恢復目錄完好,並且可用,如果不可用,先恢復恢復目錄資料庫
4、  備份伺服器上的備份資料完好,並且可用
5、  確保new_host機器上裝有的Oracle版本與old_host機器上的一致
6、  在new_host上建立dba組和與old_host相同的Oracle使用者。將\data的可寫許可權給Oracle使用者。確定new_host上有足夠的硬碟空間存放新的datafile及archive log file
7、  修改.profile檔案中相關的Oracle環境變數,ORACLE_SID保持與old_host中一致
8、還原前需收集的資訊
   Oracle資料庫SID , DBID.
   Oracle資料庫線上日誌檔案全路徑
   Oraexp 路徑
   rman使用者 和rman 使用者的表空間 (以匯入方式恢復恢復目錄時要用)
   源資料庫的引數檔案pfile檔案
RMAN異機還原的步驟:
1、  在new_host上安裝Oracle備份代理,將從old_host備份到伺服器上的資料庫備份,手工還原到new_host上(oraexp的路徑一定要一樣)。
2、  建立相關的目錄。通常所需建立的目錄為background_dump_dest、core_dump_dest、user_dump_dest、log_archive_dest。
參考指令碼: createdirectory.txt
3、  建立引數檔案pfile,要和源資料庫一致
將old_host中$ORACLE_HOME\dbs下的initSID.ora檔案拷至new_host的$ORACLE_HOME\dbs下。如果initSID.ora中有ifile='xxx.ora',則將xxx.ora也進行複製。Oracle9也可能用spinitSID.ora。
4、  建立密碼檔案pwdsid.ora
使用orapwd.exe命令,建立口令檔案pwdSID.ora,命令格式如下:
    orapwd.exe  file=e:\oracle\ora90\database\pwdSID.ora  password=change_on_install entries=5
    參考指令碼: createpwdfile.txt
5、  建立windows服務
透過oradim.exe命令,在服務裡生成一個新的例項管理服務,啟動方式為手工:
set ORACLE_SID=SID
e:\oracle\ora90\bin\oradim -new  -sid SID -startmode m –pfile e:\oracle\ora90\database\initSID.ora
參考指令碼: createservice.txt
6、  配置listener 和 tns
new_host上為Oracle要還原資料庫SID和RMAN資料配置出TNS和Listener,
tns檔案為:e:\Oracle\Ora90\network\ADMIN\ tnsnames.ora
listener 檔案e:\Oracle\Ora90\network\ADMIN\ listener.ora
7、  從前面建立的pfile裡建立spfile.
在Windows命令列中輸入:
set ORACLE_SID=SID
sqlplus /nolog
connect sys/change_on_install
create spfile from pfile=’ e:\oracle\ora90\database\initwar.ora’;
startup nomount;
exit
8、  執行恢復指令碼, 恢復控制檔案和資料檔案:(其中的一些資料可從恢復目錄中查到)
> rman
> catalog 使用者名稱/密碼@rman
> set dbid 21132232(原目標資料庫的dbid);
> target 使用者名稱/密碼@SID
> listbackup (應該可以列出備份集的資訊)
run {
shutdown immediate;
startup nomount;
restore controlfile;
}
Run {
set newname for datafile 1 to ‘資料檔案1的新路徑’;
set newname for datafile 2 to ‘資料檔案2的新路徑’;
set newname for datafile 3 to ‘資料檔案3的新路徑’;
Startup mount;
restore database;
switch datafile all;
recover database; (可能有錯誤資訊,因為online 日誌還沒設定)
}
alter tablespace temp add tempfile '/u01/oradata/orcl/temp01.dbf' size 20971520 reuse autoextend on nest 65560 maxsize 32767m; 重建臨時表空間
 
如果恢復到與原機相同的位置,不需要set newname和switch datafile
10、重置線上日誌,啟動資料庫.
sqlplus /nolog
connect sys/change_on_install@SID as sysdba;
alter database rename file ‘舊的redolog1檔案路徑’ to ‘新的redolog1檔案路徑’;
alter database open resetlogs;
(如果恢復到與原機相同的位置,不需要更改redolog檔案路徑在更改redolog檔案路徑時可能舊的redolog檔案路徑必須存在)
LINUX/UNIX 平臺異機還原基本和Window 一致,只是不需要步驟5。
總體思路同樣是:
1.       配環境變數,建相關目錄等,
2.       配listener和tns, 這樣sqlplus /nolog connect / as sysdba. 就可以連線該服務了。
3.       生成pfile 檔案,就可以 startup nomount 一個例項
4.       在nomount 狀態下,還原控制檔案,然後就可以mount 資料庫了。
5.       在mount狀態下, 還原資料檔案,恢復資料庫如果聯機日誌不存在,需要步驟6
6.       生成新的聯機日誌,然後開啟資料庫並重置日誌.alter database open resetlogs.
轉載

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-738402/,如需轉載,請註明出處,否則將追究法律責任。

相關文章