ITPub博客

首页 > 数据库 > Oracle > RMAN 数据库克隆文件位置转换方法

RMAN 数据库克隆文件位置转换方法

Oracle 作者:us_yunleiwang 时间:2013-12-05 16:03:05 0 删除 编辑

   在使用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';     -->为数据文件指定新路径                
  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';       -->为日志文件指定新路径  
  17. duplicate target database to sybo5                                             -->duplicate 命令用于克隆数据库  
  18. logfile  
  19. group 1 ('/u01/database/sybo5/redo/redo01a.log','/u01/database/sybo5/redo/redo01b.log') size 10m, -->可自行指定日志组及成员数,size  
  20. group 2 ('/u01/database/sybo5/redo/redo02a.log','/u01/database/sybo5/redo/redo02b.log') size 10m, -->如未指定logfile部分则其组数与  
  21. group 3 ('/u01/database/sybo5/redo/redo03a.log','/u01/database/sybo5/redo/redo03b.log') size 10m; -->成员数,size等同于与目标数据库  
  22. switch datafile all;                                                   -->用于将上述新路径更新到控制文件,此句可省略(会自动更新)                                   
  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')";  -->可以指定time,scn,sequence   
  22. set newname for tempfile 1 TO '/u01/database/sybo5/oradata/temp01.dbf'; -->注意,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博客 ” ,链接:https://blog.itpub.net/23490154/viewspace-1062387/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-03-15

  • 博文量
    198
  • 访问量
    1393142