在使用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. MVC和WebForm区别

    WebForm的理解 1. WebForm概念 ASP.NETWebform提供了一个类似于Winform的事件响应GUI模型(event-drivenGUI),隐藏了HTTP.HTML.JavaSc ...

  2. 探秘小程序(8):scroll-view组件

    按照官方文档的例子已经多scroll-view进行了说明,但是案例中没有样式 到时会出现一些问题,比如说,自己写的scroll-x并不能横向滚动,今天就来说一下这个问题: DEMO如下: html: ...

  3. 不要使用 JWT 进行会话管理

    英文原文地址:Stop using JWT for sessions 最近我发现越来越多的人推荐使用 JWT 来在 Web 应用中管理会话(Session),这是一个非常非常糟糕的主意,在这篇文章中我 ...

  4. JS的DOM操作 - 你真的了解吗?

    摘要 想稍微系统的说说对于DOM的操作,把Javascript和jQuery常用操作DOM的内容归纳成思维导图方便阅读,同时加入性能上的一些问题. 前言 在前端开发的过程中,javascript极为重 ...

  5. element-ui Carousel 走马灯源码分析整理笔记(十一)

    Carousel 走马灯源码分析整理笔记,这篇写的不详细,后面有空补充 main.vue <template> <!--走马灯的最外层包裹div--> <div clas ...

  6. parseInt转换

    function parse2Int(num) { return parseInt(num,10); } 如果 string 以 "0x" 开头,parseInt() 会把 str ...

  7. SAP 官网中文帮助文件&BP中文资料汇总

    系统 描述 版本 连接 SAP ME  制造执行 SAP Manufacturing Execution (SAP ME) 15.0 点击我 SAP ECC EHP6 财务部分 SAP ERP 6.0 ...

  8. Visual Studio 2015速递(4)——高级特性之移动开发

    系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...

  9. Linux  改动inittab文件及忘记密码等导致无法进入系统的解决办法

    改动inittab文件及忘记密码等导致无法进入系统的解决办法[摘] by:授客 QQ:1033553122 inittab是linux的系统启动模式配置文件,在”/etc“文件目录下没,其内容是: # ...

  10. Unity3D开发之3D按钮的声音播放

    这里我们首先就简易的制作一个非常简单的3D按钮![ 图中就一个cube 加个3DText,然后我们就编写代码 [RequireComponent(typeof(CompoundButton))]//特 ...