歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

小技巧:用NetBackup恢復Oracle到異機

  NetBackup將Oracle數據庫恢復到其它服務器     一、前提   假設備份已成功(不使用rman catalog)。假設要將數據庫恢復到new_host的不同文件系統/data上。以oracle8i語法為例,Oracle9無svrmgrl,需用sqlplus "/ as sysdba"。     二、步驟   1. 在new_host上創建dba組和與old_host相同的Oracle用戶。將/data的可寫權限給Oracle用戶。確定new_host上有足夠的硬盤空間存放新的datafile及archive log file。     2. 修改.profile文件中相關的Oracle環境變量,ORACLE_SID保持與old_host中一致。     3. 安裝與old_host相同版本的Oracle數據庫軟件,不創建數據庫。     4. 將old_host中$ORACLE_HOME/dbs下的initSID.ora文件拷至new_host的$ORACLE_HOME/dbs下。如果initSID.ora中有ifile='xxx.ora',則將xxx.ora也進行拷貝。Oracle9也可能用spinitSID.ora。     5. 創建initSID.ora(及xxx.ora)中所用到的目錄。通常所需建立的目錄為background_dump_dest、core_dump_dest、user_dump_dest、log_archive_dest。常見結構為:   $ORACLE_BASE /admin /SID /bdump   /cdump   /udump     6. 在new_host上安裝和配置NetBackup client和Oracle Agent。注意在NetBackup Server的/usr/openv/netbackup/db/altnames目錄下toUCh No.Restrictions(允許異機恢復)。     7. 從原機copy或從磁帶異機恢復standard方式備份的最新的control file到new_host的/data目錄下。     8. 修改initSID.ora(及xxx.ora),如果是OPS,將OPS相關的參數去掉:     (1) control_files = ("/data/controlfile_name")   (2) log_archive_dest="/data/arch"   (3) sort_area_size=20000000     # 如果sort_area_size不夠大,恢復archive_log時可能出現ora-1220     9. svrmgrl> startup mount     10. svrmgrl> select file# from v$datafile,記錄file#     11. svrmgrl> select * from v$logfile,記錄log文件的目錄。注意保證該目錄存在並且為oracle用戶可寫。     12. 運行恢復腳本:   rman nocatalog target / cmdfile restore.rcv msglog restore.log     附一:restore.rcv腳本:   #################   connect target /   run {   allocate channel t1 type 'sBT_tape' parms="ENV=(NB_ORA_CLIENT=old_host)";   set newname for datafile 1 to '/data/datafile_1.dbf';   set newname for datafile 2 to '/data/datafile_2.dbf';   …   restore database;   switch datafile all;   recover database;   sql 'alter database open resetlogs';   }     (如果恢復到與原機相同的位置,不需要set newname和switch datafile)   (RMAN在restore database 時只會將數據文件恢復回來;recover database時,才會restore所需的增量備份和archive log。)     附二:trouble shooting   1. 如果確認全部archive log都已用完,而recover仍提示需下一個archive log,或alter database open resetlogs時提示datafile1 need recover,可采用以下步驟:   svrmgrl > connect internal;   svrmgrl > recover database using backup controlfile until cancel;   根據提示,輸入   cancel   svrmgrl > alter database open resetlogs;     附三:恢復到歷史點   如果不是恢復到最新,而是恢復到某一時刻,rman腳本如下:     connect target /   run {   allocate channel t1 type 'sbt_tape' parms="ENV=(NB_ORA_CLIENT=old_host)";   set until time "to_date('06/30/02 13:00:00','MM/DD/YY HH24:MI:SS')"   restore database;   recover database;   sql 'alter database open resetlogs';   }




Copyright © Linux教程網 All Rights Reserved