rman duplicate 数据库文件位置改变

在使用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. --target db path: /u01/database/sybo3

  9. --auxiliary db path: /u01/database/sybo5

  10. --做如下定义

  11. *.db_file_name_convert =('sybo3','sybo5')

  12. *.log_file_name_convert =('sybo3','sybo5')

  13. --如果是下面的情形

  14. --target db path:

  15. /u01/database/sybo3/oradata/system01.dbf

  16. /u01/database/sybo3/oradata/sysaux01.dbf

  17. /u02/database/sybo3/oradata/undotbs01.dbf

  18. /u02/database/sybo3/oradata/users01.dbf

  19. /u02/database/sybo3/oradata/example01.dbf

  20. --auxiliary db path:

  21. /u01/database/sybo5/oradata/system01.dbf

  22. /u01/database/sybo5/oradata/sysaux01.dbf

  23. /u02/database/sybo5/oradata/undotbs01.dbf

  24. /u02/database/sybo5/oradata/users01.dbf

  25. /u02/database/sybo5/oradata/example01.dbf

  26. --如前所述,由于加载点是相同的,依旧可以按上面的方式定义

  27. *.db_file_name_convert =('sybo3','sybo5')

  28. *.log_file_name_convert =('sybo3','sybo5')

  29. --下面是克隆之后的情形,最好清除这个两个参数

  30. [oracle@linux3 ~]$ rman target sys/oracle@sybo3 auxiliary sys/oracle@sybo5

  31. RMAN> duplicate target database to sybo5; --发布该命令后,Oracle会根据目标数据库自动创建辅助数据库日志文件以及临时表空间数据文件

  32. SQL> select name,dbid,open_mode from v$database;

  33. NAME DBID OPEN_MODE

  34. --------- ---------- --------------------

  35. SYBO5 2292457546 READ WRITE

  36. SQL> show parameter name_conve

  37. NAME TYPE VALUE

  38. ------------------------------------ ----------- ------------------------------

  39. db_file_name_convert string sybo3, sybo5

  40. log_file_name_convert string sybo3, sybo5

  41. SQL> alter system reset db_file_name_convert;

  42. System altered.

  43. SQL> alter system reset log_file_name_convert;

  44. System altered.

2、使用RMAN set newname子句

  1. RMAN 为我们提供了set newname 子句用于指定辅助数据库数据文件以及临时表空间数据文件的位置。

  2. 该命令也可以用于特定表空间或数据文件因加载点失败将数据文件恢复到非故障加载点。

  3. 如下:

  4. set newname for datafile m to '<new_dir>/file_name'

  5. set newname for tempfile n to '<new_dir>/file_name'

  6. 如我们可以使用下面的命令来克隆数据库

  7. RMAN> run

  8. {

  9. set newname for datafile 1 to '/u01/database/sybo5/oradata/system01.dbf'; -->为数据文件指定新路径

  10. set newname for datafile 2 to '/u01/database/sybo5/oradata/sysaux01.dbf';

  11. set newname for datafile 3 to '/u01/database/sybo5/oradata/undotbs01.dbf';

  12. set newname for datafile 4 to '/u01/database/sybo5/oradata/users01.dbf';

  13. set newname for datafile 5 to '/u01/database/sybo5/oradata/example01.dbf';

  14. set newname for tempfile 1 to '/u01/database/sybo5/oradata/temp01.dbf'; -->为日志文件指定新路径

  15. duplicate target database to sybo5 -->duplicate 命令用于克隆数据库

  16. logfile

  17. group 1 ('/u01/database/sybo5/redo/redo01a.log','/u01/database/sybo5/redo/redo01b.log') size 10m, -->可自行指定日志组及成员数,size

  18. group 2 ('/u01/database/sybo5/redo/redo02a.log','/u01/database/sybo5/redo/redo02b.log') size 10m, -->如未指定logfile部分则其组数与

  19. group 3 ('/u01/database/sybo5/redo/redo03a.log','/u01/database/sybo5/redo/redo03b.log') size 10m; -->成员数,size等同于与目标数据库

  20. switch datafile all; -->用于将上述新路径更新到控制文件,此句可省略(会自动更新)

  21. }

3、使用configure auxname命令

  1. configure auxname是在Oracle 11g开始提供的新命令,该配置命令会将其值存储在目标数据库的控制文件中

  2. 用法如下:

  3. configure auxname for datafile n to '<new_dir>/file_name';

  4. configure auxname for datafile n clear;

  5. --Author : Robinson

  6. --Blog : http://blog.csdn.net/robinson_0612

  7. 如下面是设置之后的结果:

  8. RMAN> show auxname;

  9. RMAN configuration parameters for database with db_unique_name SYBO3 are:

  10. CONFIGURE AUXNAME FOR DATAFILE '/u01/database/sybo3/oradata/system01.dbf' TO '/u01/database/sybo5/oradata/system01.dbf';

  11. CONFIGURE AUXNAME FOR DATAFILE '/u01/database/sybo3/oradata/sysaux01.dbf' TO '/u01/database/sybo5/oradata/sysaux01.dbf';

  12. CONFIGURE AUXNAME FOR DATAFILE '/u01/database/sybo3/oradata/undotbs01.dbf' TO '/u01/database/sybo5/oradata/undotbs01.dbf';

  13. CONFIGURE AUXNAME FOR DATAFILE '/u01/database/sybo3/oradata/users01.dbf' TO '/u01/database/sybo5/oradata/users01.dbf';

  14. CONFIGURE AUXNAME FOR DATAFILE '/u01/database/sybo3/oradata/example01.dbf' TO '/u01/database/sybo5/oradata/example01.dbf';

  15. RMAN>run

  16. {

  17. set until time = "to_date('20130725 10:09:53','yyyymmdd hh24:mi:ss')"; -->可以指定time,scn,sequence

  18. set newname for tempfile 1 TO '/u01/database/sybo5/oradata/temp01.dbf'; -->注意,configure auxname不支持tempfile,此处需要使用set newname

  19. duplicate target database to clone_db pfile=/u01/oracle/db_1/dbs/initsybo5.ora

  20. logfile

  21. '/u01/database/sybo5/redo/redo01a.log' SIZE 5M,

  22. '/u01/database/sybo5/redo/redo02a.log' SIZE 5M,

  23. '/u01/database/sybo5/redo/redo03a.log' SIZE 5M;

  24. }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值