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

转载于:https://www.cnblogs.com/hftian/p/9288280.html

RMAN 数据库克隆文件位置转换方法相关推荐

  1. oracle数据库激活控制文件位置,Oracle数据库之Oracle 重建控制文件一例

    本文主要向大家介绍了Oracle数据库之Oracle 重建控制文件一例,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 环境:OEL 5.7 + Oracle 10.2.0.5 ...

  2. 案例解读:RMAN 备份控制文件报错 ORA-00230

    墨墨导读:本文来自墨天轮用户"JiekeXu"投稿,墨天轮主页:https://www.modb.pro/u/4347.这里记录错误 ORA-00230:执行备份时,有几个数据库在 ...

  3. linux j查找文件位置,Linux下的文件查找命令——find

    Linux下几个常见的文件查找命令: which       查看可执行文件的位置 whereis    寻找特定文件,查看文件的位置 locate       配合数据库查看文件位置 find    ...

  4. oracle修改数据文件存储位置,oracle 修改数据库文件位置

    Oracle 体系结构 Oracle 服务器 如图所示:由oracle实例(INSTANCE)和数据库(database)组成. 1) Instance 实例用于管理和调用数据库,是由oracle系统 ...

  5. 如何更改服务器上的数据库文件夹,如何设置数据库文件位置

    如何设置数据库文件位置 08/07/2014 本文内容 适用于: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server ...

  6. mysql linux 数据库文件位置_mysql在linux下修改mysql数据库文件位置

    linux下(这里是centos),mysql安装后,数据库的数据默认存放在/var/lib/mysql目录下,如果该目录下挂载的磁盘空间很少,不够用,需要迁移到其他的目录位置. 方法一: 参照win ...

  7. 已编辑好的mysql_安装好的mysql改变数据库文件位置

    Linux系统: linux下,MySQL默认的数据文档存储目录为/var/lib/mysql.假如要把MySQL目录移到/home/data下需要进行下面几步: 1.home目录下建立data目录 ...

  8. mysql 换文件夹_windows下更换MySql数据库数据文件夹位置

    概述 由于更换硬盘,系统重新安装了一遍,原来的mysql数据还在之前的磁盘中,之前的磁盘被作为外接硬盘挂在在笔记本上,处于最小化迁移成本的考虑,我这里准备在新的系统中安装一个新的数据库,然后将数据库的 ...

  9. oracle数据库表excel文件位置,“如何将excel表格数据导入到oracle数据库对应的表中?“数据库文件导入excel表格数据库中...

    如何实现Excel表格自动导入到数据库 库?是什么数据库?sql?access?mysql?我以sql2008为例子 1.打开SQL Server Management Studio-任务-数据 2. ...

  10. mysql数据库日志存储位置_MySQL数据库之mysql日志文件在哪 如何修改MySQL日志文件位置...

    本文主要向大家介绍了MySQL数据库之mysql日志文件在哪 如何修改MySQL日志文件位置 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. MySQL日志文件相信大家都有很多的 ...

最新文章

  1. 淘宝npm镜像使用方法
  2. Flash补间引擎应用:图片特效(2)
  3. REVERSE-PRACTICE-BUUCTF-20
  4. Screen Painter 程序设计
  5. 在嵌入式公司和在互联网公司写软件,有什么区别?
  6. LinkedHashMap入门
  7. 类似c语言sizeof,sizeof()与strlen()在C语言中有什么不同
  8. paip.php页面调试设置及流程
  9. java swing 圆形图标_java swing 圆形按钮
  10. Mac VMWare键盘鼠标失灵
  11. ①测定预测精度的方法【误差】—②组合模型【线性组合模型+最优线性组合模型+贝叶斯组合模型】
  12. Cocos2d-x学习(七):cocos2d-x中ScrollView的简单实现
  13. ajax发送请求的数据结构
  14. Steam根目录下userdata文件夹命名规则
  15. 编程练习:既是完全平方数又有两位数字相同的三位数
  16. 现在, Delphi 的多线程已经非常易用了!
  17. 【笔记】CUDA(二) - (异步)SIMT 架构
  18. js中转json数组常用方法
  19. RTOS学习笔记--FreeRTOS的列表和列表项
  20. python批量处理网络设备的巡检文本文件,提取关键指标写入表格或数据库

热门文章

  1. python中capital是什么意思_Capital是什么意思?
  2. concurrenthashmap为什么是线程安全_为什么 StringBuilder 不是线程安全的?
  3. 使用post访问不到接口_Postman调试依赖登录接口的3种方法
  4. 《团队作业第三、第四周》五小福团队作业--Scrum 冲刺阶段--Day7
  5. eyoucms 网页制作软件有哪些 这些你都知道吗
  6. 树莓派进阶之路 (027) - 在Linux中增加swap空间
  7. 自定义 Yasnippet 模板
  8. WIN7专业版下安装MS SQL SERVER 2005 开发版
  9. std::string.assign()的用法-爱情滕-搜狐博客
  10. python - 动态加载模块和类