在使用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.
  58.  

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. 如我们可以使用下面的命令来克隆数据库
  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. }
  24.  

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.  
  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. }
  29.  

RMAN 数据库克隆文件位置转换方法的更多相关文章

  1. 基于RMAN的异机数据库克隆(rman duplicate)

    对于基于生产环境下的数据库的版本升级或者测试新的应用程序的性能及其影响,备份恢复等等,我们可以采取从生产环境以克隆的方式将其克隆到本地而不影响生产数据库的正常使用.实现这个功能我们可以借助rman d ...

  2. rman数据库恢复;关键/非重要文件、影像副本、控制文件、还原点、非归档、增量、新数据库、灾难性回复

    运行全然恢复:在 ARCHIVELOG 模式下 丢失了系统重要数据文件: 假设某个数据文件丢失或损坏.且该文件属于 SYSTEM 或 UNDO 表空间,请运行下面步骤: 1. 实例可能会也可能不会自己 ...

  3. Oracle19c 如何用rman duplicate 克隆一个数据库。(Backup-Based, achive log)

    Oracle19c 如何用rman duplicate 克隆一个数据库.(Backup-Based, achive log) 首先克隆有两种方法,一种是Backup-Based,一种是Active方式 ...

  4. Oracle19c 如何用rman duplicate 克隆一个数据库。(Backup-Based, no achive log)

    Oracle19c 如何用rman duplicate 克隆一个数据库. 首先克隆有两种方法,一种是Backup-Based,一种是Active方式.官网文档链接https://docs.oracle ...

  5. Oracle19c 如何用rman duplicate 克隆一个数据库。(Active方式)

    Oracle19c 如何用rman duplicate 克隆一个数据库. 首先克隆有两种方法,一种是Backup-Based,一种是Active方式.官网文档链接https://docs.oracle ...

  6. mysql数据库存储路径更改 数据文件位置

    使用了VPS一段时间之后发现磁盘空间快满了.本人的VPS在购买的时候买了500gb的磁盘,提供商赠送了20GB的高性能系统磁盘.这样系统就有两个磁盘空间了.在初次安装mysql 的时候将数据库目录安装 ...

  7. 如何获取SQL Server 2008数据库数据文件的位置

    在SQL Server中,要获取数据库数据文件的物理位置,有三种方法: sp_helpdb bright name          filename                        f ...

  8. RMAN数据库恢复之丢失数据文件的恢复

    删除某一数据文件:SQL> HOST del D:\app\Administrator\oradata\orcl\USERS01.dbf 启动数据库,提示丢失数据文件4,此时数据库处理MOUNT ...

  9. RMAN数据库恢复之控制文件和参数文件恢复

    一.控制文件的恢复1.查询控制文件的路径 SQL> SELECT * FROM V$CONTROLFILE; STATUS NAME IS_RECOVERY_DEST_FILE BLOCK_SI ...

随机推荐

  1. Windows环境使用Nexus-3.x搭建Maven私服

    [前言] 本文主要讲解在Wiindows环境下搭建最新出的Nexus 3.x私服. 1.搭建私服的必要性 一般情况下,各个公司的开发团队为了提高开发效率,都会使用项目构建工具进行开发.常见的构建工具有 ...

  2. 【测试记录】EF插入查询性能

    介绍     背景什么就不提了,无外乎出现了大数据需要处理.简单的说就是我测试了EF正常的插入以及一个优化小方式而已,然后做了查询记录.其余没有什么,写这篇只是为了记录结果方便以后数据参考吧. 代码介 ...

  3. JS中数组去重的九方法

            数组去重方法        方法一:运用set结构特点:存储的数据没有重复的,结果为对象,再用Array.from()转换成数组   var arr = [1,1,2,1,3,4,5] ...

  4. 【读书笔记】iOS-使用蓝牙

    蓝牙是由Sony Ericsso公司研发出来的,它是一种无线通讯协议,主要用于短程和低耗电设备,其有效通讯范围约30ft,传输速度为1MB/s.与Wifi设计初衷不同,蓝牙适用于无线的外围设备,进行小 ...

  5. 【读书笔记】iOS-动态类型和动态绑定

    id是泛类型,可以用来存放各种类型的对象,使用id也就是使用“动态类型”. 动态类型,就是指,对象实际使用的是哪一个类是在执行期间确定的,而非在编译期间. 虽然id类型可以定义任何类型的对象,但是不要 ...

  6. 一些关于Viewport与device-width的东西~(转)

    内容转自 http://www.cnblogs.com/koukouyifan/p/4066567.html 非常感谢 口口一凡 为我们提供的这篇文章,受益匪浅,特地转到自己的博客收藏起来. 以下是原 ...

  7. Linux高可靠技术

    1.进程挂死时,有后台监控程序检测重新拉起. 2.进程占用系统资源超过ulimit限定的资源时,会被ulimit杀死,同时配合后台监控程序,重新拉起进程,实现进程可靠性. 3.Linux系统的高可靠性 ...

  8. 使用volley上传多张图片,一个参数对应多张图片,转载

    https://my.oschina.net/u/1177694/blog/491834 原帖地址 而如果使用volley的话,因为请求数据那些都很简便,但遇到上传文件就麻烦那可不好,同时使用多个网络 ...

  9. python学习第一周(1)

    备注:一般规范代码,可以操作code-reformat code 1. #!/usr/bin/env python 脚本语言第一行 作用:文件中代码用指定可执行程序运行,在unix类的操作系统才有意义 ...

  10. 如何创建和还原SQL Server 2000数据库?

    说明:这篇文章是几年前我发布在网易博客当中的原创文章,但由于网易博客现在要停止运营了,所以我就把这篇文章搬了过来,虽然现如今SQL Server 2000软件早已经过时了,但仍然有一部分人在使用它,尤 ...