rman備份異機恢復(原創)

shilei1發表於2019-02-12



說明:
1、 rman異機恢復的時候,db_name必須相同。如果說要想改成其他的例項名,可以在恢復成功後,用nid命令修改。例項名的資訊會記錄到控制檔案裡,所以如果在恢復的時候,例項名不一致會報錯。
2、如果恢復的路徑與源庫不一致,就需要在restore時用set命令指定新的
在做duplicate的時候,rman會自動根據pfile中的log_file_name_convert和db_file_name_convert來進行set的轉換。手工restore時,只能使用set命令。
3、用nid修改bdid和dbname

使用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(如UNIX平臺)
7、  修改.profile檔案中相關的Oracle環境變數,ORACLE_SID保持與old_host中一致(如UNIX平臺)
8、還原前需收集的資訊
   Oracle資料庫SID , DBID.
   Oracle資料庫線上日誌檔案全路徑
   Oraexp 路徑
   rman使用者 和rman 使用者的表空間 (以匯入方式恢復恢復目錄時要用)
   源資料庫的引數檔案pfile檔案

恢復步驟:
1、在輔助機要有oracle軟體,並且正確配置連線catalog資料庫。
2、將從old_host備份到伺服器上的資料庫備份,手工還原到new_host上(要求目錄必須一致,catalog庫會記載在old_host上備份集在啥位置上。)
3、  建立相關的目錄(11g不用)。通常所需建立的目錄為background_dump_dest、core_dump_dest、user_dump_dest、log_archive_dest
4、、  建立引數檔案pfile,要和源資料庫一致(如果old_host的ORACLE_HOME與new_host不一致可以放在相應目錄下,並修改pfile中相關內容與實際相符,例如目錄、控制檔案位置等)
將old_host中$ORACLE_HOME\dbs下的initSID.ora檔案拷至new_host的$ORACLE_HOME\dbs下。如果initSID.ora中有ifile='xxx.ora',則將xxx.ora也進行複製。Oracle9也可能用spinitSID.ora。
5、建立密碼檔案
orapwd file=E:\app\Administrator\product\11.2.0\dbhome_1\dbs\PWDvcenter password=oracle

6、建立服務(如果win):
C:\Users\Administrator>oradim -new -sid vcenter -startmode m -pfile E:\app\Administrator\product\11.2.0\dbhome_1\da
tabase\INITvcenter.ora


7、從前面建立的pfile裡建立spfile.
SQL> create spfile from pfile='E:\app\Administrator\product\11.2.0\dbhome_1\database\INITvcenter.ora'
  2  ;

8、執行恢復指令碼, 恢復控制檔案和資料檔案:
startup nomount  (spfile起作用)
 

rman target / catalog rman/rman@rman
 restore controlfile  (按pfile中設定的位置恢復)
list backup 可以看見所以得備份集,備份集在原機啥位置 ,輔助機仍然要在啥位置,否則無法找到備份集。


run{
 set newname for datafile 1 to 'E:\app\Administrator\oradata\vcenter\system01.dbf';
 set newname for datafile 2 to 'E:\app\Administrator\oradata\vcenter\sysaux01.dbf';
 set newname for datafile 3 to 'E:\app\Administrator\oradata\vcenter\undotbs01.dbf';
 set newname for datafile 4 to 'E:\app\Administrator\oradata\vcenter\users01.dbf';
 set newname for datafile 5 to 'E:\app\Administrator\oradata\vcenter\vpx01.dbf';
startup mount;
restore database;
switch datafile all;}   (更新控制檔案)


9、重置線上日誌
11g R2平臺 在open resetlogs之後,自動在原來預設的路徑建立temp表空間和redo,但是如果路徑與原庫不一致,由於沒有響應目錄無法建立。
需要先更改控制檔案中日誌檔案的存在位置。

SQL> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\VCENTER\REDO01.LOG' to 'E:\app\Administrator\oradata\
vcenter\redo01.log';

資料庫已更改。

SQL> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\VCENTER\REDO02.LOG' to 'E:\app\Administrator\oradata\
vcenter\redo02.log';

資料庫已更改。

SQL> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\VCENTER\REDO03.LOG' to 'E:\app\Administrator\oradata\
vcenter\redo03.log';

資料庫已更改。

SQL> alter database open resetlogs;

資料庫已更改。


資料庫已經開啟,並按照控制檔案中日誌檔案、臨時檔案存在的位置建立臨時檔案與日誌檔案,但是必須要有相符的路徑。
10、修改臨時檔案

需要建立一個新的臨時表空間再設定為預設,將原臨時表空間刪除,實際是刪除控制檔案中臨時檔案原存放位置資訊。
SQL> create temporary tablespace temp01 tempfile 'E:\app\Administrator\oradata\vcenter\temp01.dbf' size 100m
  2  autoextend on;

Tablespace created.

SQL> alter database default temporary tablespace temp01;

Database altered.

SQL> drop tablespace temp including contents and datafiles;

Tablespace dropped.

SQL> select * from dba_temp_files;

FILE_NAME
--------------------------------------------------------------------------------
   FILE_ID TABLESPACE_NAME                     BYTES     BLOCKS STATUS
---------- ------------------------------ ---------- ---------- -------
RELATIVE_FNO AUT   MAXBYTES  MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
------------ --- ---------- ---------- ------------ ---------- -----------
E:\APP\ADMINISTRATOR\ORADATA\VCENTER\TEMP01.DBF
         2 TEMP01                          104857600      12800 ONLINE
           1 YES 3.4360E+10    4194302            1  103809024       12672


11、重新設定新的備份環境,進行全備


注意:
一、ORA-01861: literal does not match format string
RMAN中使用recover database until time '2009-06-09 14:00:00'
命令進行基於時間點的恢復時報的一個錯誤。
這個錯誤是由於時間日期格式設定的問題,設定正確的時間格式:
$ export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'

二、ORA-06553: PLS-801: internal error [56319]錯誤
目標資料庫恢復成功,登陸進去,一切正常。結果在執行最簡單的sql查詢的時候報這個錯,執行多個不同的sql反覆報這個錯誤,但sql語句可以正常執行。rapidsql等工具無法連線。
原因:源庫是64位的OS,目標庫是32位(9.36安裝64位10g,5.186安裝32位10g)
解決方法:
1、Shutdown immediate
2、startup migrate
注:startup migrate表示降級,在9i,無論升級/降級 資料庫都是startup migrate;10g後增加了upgrade引數,升級可直接用startup upgrade,降級仍是startup migrate.
3、@$ORACLE_HOME/rdbms/admin/utlirp.sql;
4、Shutdown immediate
5、Startup
6、@$ORACLE_HOME/rdbms/admin/utlrp.sql;
7、Shutdown immediate
8、Startup

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

相關文章