RMAN 資料庫克隆檔案位置轉換方法

us_yunleiwang發表於2013-12-05

   在使用RMAN克隆資料庫時,如果輔助資料庫(新資料庫)使用了與目標資料庫(原資料庫)使用了不同的路徑,那麼就存在位置轉換的問題。在Oracle中,控制檔案用於定位資料檔案以及聯機重做日誌檔案,如果沒有正確的轉換,控制檔案壓根就找不到相應的資料檔案,日誌檔案。對此Oralce為我們提供了三種檔案位置的轉換方法。本文即是對這三種轉換方法的描述。

 

1、使用db_file_name_convert與log_file_name_convert引數

  1. --我們可以在輔助資料庫引數檔案spfile/pfile中定義這兩個引數用於Oracle來根據這個值進行自動轉換檔案位置  
  2. --該引數也可以用於配置dataguard是主資料庫與standby資料庫檔案位置轉換  
  3. --第一個字串用於定義目標資料庫檔案位置,第二個字串用於定義輔助資料庫檔案位置  
  4. --如下面的示例  
  5. *.db_file_name_convert =('/u01/database/sybo3','/u02/database/sybo5')  
  6. *.log_file_name_convert =('/u01/database/sybo3','/u02/database/sybo5')  
  7.   
  8. --如果輔助資料庫檔案的位置有關的其他資訊,如載入點都是相同的,可以直接使用下面的方式來定義引數  
  9. --target db path: /u01/database/sybo3  
  10. --auxiliary db path: /u01/database/sybo5  
  11. --做如下定義  
  12. *.db_file_name_convert =('sybo3','sybo5')  
  13. *.log_file_name_convert =('sybo3','sybo5')  
  14.   
  15. --如果是下面的情形  
  16. --target db path:  
  17.   /u01/database/sybo3/oradata/system01.dbf  
  18.   /u01/database/sybo3/oradata/sysaux01.dbf  
  19.   /u02/database/sybo3/oradata/undotbs01.dbf  
  20.   /u02/database/sybo3/oradata/users01.dbf  
  21.   /u02/database/sybo3/oradata/example01.dbf  
  22.   
  23. --auxiliary db path:  
  24.     /u01/database/sybo5/oradata/system01.dbf  
  25.   /u01/database/sybo5/oradata/sysaux01.dbf  
  26.   /u02/database/sybo5/oradata/undotbs01.dbf  
  27.   /u02/database/sybo5/oradata/users01.dbf  
  28.   /u02/database/sybo5/oradata/example01.dbf  
  29.   
  30. --如前所述,由於載入點是相同的,依舊可以按上面的方式定義  
  31. *.db_file_name_convert =('sybo3','sybo5')   
  32. *.log_file_name_convert =('sybo3','sybo5')   
  33.   
  34. --下面是克隆之後的情形,最好清除這個兩個引數  
  35. [oracle@linux3 ~]$ rman target sys/oracle@sybo3 auxiliary sys/oracle@sybo5  
  36.   
  37. RMAN> duplicate target database to sybo5;  --釋出該命令後,Oracle會根據目標資料庫自動建立輔助資料庫日誌檔案以及臨時表空間資料檔案  
  38.   
  39. SQL> select name,dbid,open_mode from v$database;  
  40.   
  41. NAME            DBID OPEN_MODE  
  42. --------- ---------- --------------------  
  43. SYBO5     2292457546 READ WRITE  
  44.   
  45. SQL> show parameter name_conve  
  46.   
  47. NAME                                 TYPE        VALUE  
  48. ------------------------------------ ----------- ------------------------------  
  49. db_file_name_convert                 string      sybo3, sybo5  
  50. log_file_name_convert                string      sybo3, sybo5  
  51. SQL> alter system reset db_file_name_convert;  
  52.   
  53. System altered.  
  54.   
  55. SQL> alter system reset log_file_name_convert;  
  56.   
  57. System altered.  

2、使用RMAN set newname子句

  1. RMAN 為我們提供了set newname 子句用於指定輔助資料庫資料檔案以及臨時表空間資料檔案的位置。  
  2. 該命令也可以用於特定表空間或資料檔案因載入點失敗將資料檔案恢復到非故障載入點。  
  3. 如下:  
  4.   set newname for datafile m to '/file_name'  
  5.   set newname for tempfile n to '/file_name'  
  6.     
  7. 如我們可以使用下面的命令來克隆資料庫  
  8.   
  9. RMAN> run  
  10. {  
  11. set newname for datafile 1  to '/u01/database/sybo5/oradata/system01.dbf';     --&gt為資料檔案指定新路徑                
  12. set newname for datafile 2  to '/u01/database/sybo5/oradata/sysaux01.dbf';                          
  13. set newname for datafile 3  to '/u01/database/sybo5/oradata/undotbs01.dbf';                         
  14. set newname for datafile 4  to '/u01/database/sybo5/oradata/users01.dbf';                           
  15. set newname for datafile 5  to '/u01/database/sybo5/oradata/example01.dbf';                         
  16. set newname for tempfile 1  to '/u01/database/sybo5/oradata/temp01.dbf';       --&gt為日誌檔案指定新路徑  
  17. duplicate target database to sybo5                                             --&gtduplicate 命令用於克隆資料庫  
  18. logfile  
  19. group 1 ('/u01/database/sybo5/redo/redo01a.log','/u01/database/sybo5/redo/redo01b.log') size 10m, --&gt可自行指定日誌組及成員數,size  
  20. group 2 ('/u01/database/sybo5/redo/redo02a.log','/u01/database/sybo5/redo/redo02b.log') size 10m, --&gt如未指定logfile部分則其組數與  
  21. group 3 ('/u01/database/sybo5/redo/redo03a.log','/u01/database/sybo5/redo/redo03b.log') size 10m; --&gt成員數,size等同於與目標資料庫  
  22. switch datafile all;                                                   --&gt用於將上述新路徑更新到控制檔案,此句可省略(會自動更新)                                   
  23. }  

3、使用configure auxname命令

  1. configure auxname是在Oracle 11g開始提供的新命令,該配置命令會將其值儲存在目標資料庫的控制檔案中  
  2. 用法如下:  
  3.   configure auxname for datafile n to '/file_name';  
  4.   configure auxname for datafile n clear;  
  5.   
  6. --Author : Robinson  
  7. --Blog   : http://blog.csdn.net/robinson_0612  
  8.   
  9. 如下面是設定之後的結果:    
  10. RMAN> show auxname;  
  11.   
  12. RMAN configuration parameters for database with db_unique_name SYBO3 are:  
  13. CONFIGURE AUXNAME FOR DATAFILE '/u01/database/sybo3/oradata/system01.dbf' TO '/u01/database/sybo5/oradata/system01.dbf';  
  14. CONFIGURE AUXNAME FOR DATAFILE '/u01/database/sybo3/oradata/sysaux01.dbf' TO '/u01/database/sybo5/oradata/sysaux01.dbf';  
  15. CONFIGURE AUXNAME FOR DATAFILE '/u01/database/sybo3/oradata/undotbs01.dbf' TO '/u01/database/sybo5/oradata/undotbs01.dbf';  
  16. CONFIGURE AUXNAME FOR DATAFILE '/u01/database/sybo3/oradata/users01.dbf' TO '/u01/database/sybo5/oradata/users01.dbf';  
  17. CONFIGURE AUXNAME FOR DATAFILE '/u01/database/sybo3/oradata/example01.dbf' TO '/u01/database/sybo5/oradata/example01.dbf';   
  18.   
  19. RMAN>run   
  20. {  
  21. set until time = "to_date('20130725 10:09:53','yyyymmdd hh24:mi:ss')";  --&gt可以指定time,scn,sequence   
  22. set newname for tempfile 1 TO '/u01/database/sybo5/oradata/temp01.dbf'; --&gt注意,configure auxname不支援tempfile,此處需要使用set newname  
  23. duplicate target database to clone_db pfile=/u01/oracle/db_1/dbs/initsybo5.ora  
  24. logfile  
  25. '/u01/database/sybo5/redo/redo01a.log' SIZE 5M,   
  26. '/u01/database/sybo5/redo/redo02a.log' SIZE 5M,   
  27. '/u01/database/sybo5/redo/redo03a.log' SIZE 5M;    
  28. }   

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

相關文章