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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:       在使用RMAN克隆数据库时,如果辅助数据库(新数据库)使用了与目标数据库(原数据库)使用了不同的路径,那么就存在位置转换的问题。在Oracle中,控制文件用于定位数据文件以及联机重做日志文件,如果没有正确的转换,控制文件压根就找不到相应的数据文件,日志文件。

      在使用RMAN克隆数据库时,如果辅助数据库(新数据库)使用了与目标数据库(原数据库)使用了不同的路径,那么就存在位置转换的问题。在Oracle中,控制文件用于定位数据文件以及联机重做日志文件,如果没有正确的转换,控制文件压根就找不到相应的数据文件,日志文件。对此Oralce为我们提供了三种文件位置的转换方法。本文即是对这三种转换方法的描述。

 

1、使用db_file_name_convert与log_file_name_convert参数

--我们可以在辅助数据库参数文件spfile/pfile中定义这两个参数用于Oracle来根据这个值进行自动转换文件位置
--该参数也可以用于配置dataguard是主数据库与standby数据库文件位置转换
--第一个字符串用于定义目标数据库文件位置,第二个字符串用于定义辅助数据库文件位置
--如下面的示例
*.db_file_name_convert =('/u01/database/sybo3','/u02/database/sybo5')
*.log_file_name_convert =('/u01/database/sybo3','/u02/database/sybo5')

--如果辅助数据库文件的位置有关的其他信息,如加载点都是相同的,可以直接使用下面的方式来定义参数
--target db path: /u01/database/sybo3
--auxiliary db path: /u01/database/sybo5
--做如下定义
*.db_file_name_convert =('sybo3','sybo5')
*.log_file_name_convert =('sybo3','sybo5')

--如果是下面的情形
--target db path:
  /u01/database/sybo3/oradata/system01.dbf
  /u01/database/sybo3/oradata/sysaux01.dbf
  /u02/database/sybo3/oradata/undotbs01.dbf
  /u02/database/sybo3/oradata/users01.dbf
  /u02/database/sybo3/oradata/example01.dbf

--auxiliary db path:
    /u01/database/sybo5/oradata/system01.dbf
  /u01/database/sybo5/oradata/sysaux01.dbf
  /u02/database/sybo5/oradata/undotbs01.dbf
  /u02/database/sybo5/oradata/users01.dbf
  /u02/database/sybo5/oradata/example01.dbf

--如前所述,由于加载点是相同的,依旧可以按上面的方式定义
*.db_file_name_convert =('sybo3','sybo5') 
*.log_file_name_convert =('sybo3','sybo5') 

--下面是克隆之后的情形,最好清除这个两个参数
[oracle@linux3 ~]$ rman target sys/oracle@sybo3 auxiliary sys/oracle@sybo5

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

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

NAME            DBID OPEN_MODE
--------- ---------- --------------------
SYBO5     2292457546 READ WRITE

SQL> show parameter name_conve

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string      sybo3, sybo5
log_file_name_convert                string      sybo3, sybo5
SQL> alter system reset db_file_name_convert;

System altered.

SQL> alter system reset log_file_name_convert;

System altered.

2、使用RMAN set newname子句

RMAN 为我们提供了set newname 子句用于指定辅助数据库数据文件以及临时表空间数据文件的位置。
该命令也可以用于特定表空间或数据文件因加载点失败将数据文件恢复到非故障加载点。
如下:
  set newname for datafile m to '<new_dir>/file_name'
  set newname for tempfile n to '<new_dir>/file_name'
  
如我们可以使用下面的命令来克隆数据库

RMAN> run
{
set newname for datafile 1  to '/u01/database/sybo5/oradata/system01.dbf';     -->为数据文件指定新路径              
set newname for datafile 2  to '/u01/database/sybo5/oradata/sysaux01.dbf';                        
set newname for datafile 3  to '/u01/database/sybo5/oradata/undotbs01.dbf';                       
set newname for datafile 4  to '/u01/database/sybo5/oradata/users01.dbf';                         
set newname for datafile 5  to '/u01/database/sybo5/oradata/example01.dbf';                       
set newname for tempfile 1  to '/u01/database/sybo5/oradata/temp01.dbf';       -->为日志文件指定新路径
duplicate target database to sybo5                                             -->duplicate 命令用于克隆数据库
logfile
group 1 ('/u01/database/sybo5/redo/redo01a.log','/u01/database/sybo5/redo/redo01b.log') size 10m, -->可自行指定日志组及成员数,size
group 2 ('/u01/database/sybo5/redo/redo02a.log','/u01/database/sybo5/redo/redo02b.log') size 10m, -->如未指定logfile部分则其组数与
group 3 ('/u01/database/sybo5/redo/redo03a.log','/u01/database/sybo5/redo/redo03b.log') size 10m; -->成员数,size等同于与目标数据库
switch datafile all;                                                   -->用于将上述新路径更新到控制文件,此句可省略(会自动更新)                                 
}

3、使用configure auxname命令

configure auxname是在Oracle 11g开始提供的新命令,该配置命令会将其值存储在目标数据库的控制文件中
用法如下:
  configure auxname for datafile n to '<new_dir>/file_name';
  configure auxname for datafile n clear;

--Author : Robinson
--Blog   : http://blog.csdn.net/robinson_0612

如下面是设置之后的结果:  
RMAN> show auxname;

RMAN configuration parameters for database with db_unique_name SYBO3 are:
CONFIGURE AUXNAME FOR DATAFILE '/u01/database/sybo3/oradata/system01.dbf' TO '/u01/database/sybo5/oradata/system01.dbf';
CONFIGURE AUXNAME FOR DATAFILE '/u01/database/sybo3/oradata/sysaux01.dbf' TO '/u01/database/sybo5/oradata/sysaux01.dbf';
CONFIGURE AUXNAME FOR DATAFILE '/u01/database/sybo3/oradata/undotbs01.dbf' TO '/u01/database/sybo5/oradata/undotbs01.dbf';
CONFIGURE AUXNAME FOR DATAFILE '/u01/database/sybo3/oradata/users01.dbf' TO '/u01/database/sybo5/oradata/users01.dbf';
CONFIGURE AUXNAME FOR DATAFILE '/u01/database/sybo3/oradata/example01.dbf' TO '/u01/database/sybo5/oradata/example01.dbf'; 

RMAN>run 
{
set until time = "to_date('20130725 10:09:53','yyyymmdd hh24:mi:ss')";  -->可以指定time,scn,sequence 
set newname for tempfile 1 TO '/u01/database/sybo5/oradata/temp01.dbf'; -->注意,configure auxname不支持tempfile,此处需要使用set newname
duplicate target database to clone_db pfile=/u01/oracle/db_1/dbs/initsybo5.ora
logfile
'/u01/database/sybo5/redo/redo01a.log' SIZE 5M, 
'/u01/database/sybo5/redo/redo02a.log' SIZE 5M, 
'/u01/database/sybo5/redo/redo03a.log' SIZE 5M;  
} 


Oracle&nbsp;牛鹏社

 

相关参考
    基于用户管理的同机数据库克隆

    基于 RMAN 的同机数据库克隆   

    Oracle 冷备份

    Oracle 热备份

    Oracle 备份恢复概念

    Oracle 实例恢复

    Oracle 基于用户管理恢复的处理

    SYSTEM 表空间管理及备份恢复

    SYSAUX表空间管理及恢复

    Oracle 基于备份控制文件的恢复(unsing backup controlfile)

    RMAN 概述及其体系结构

    RMAN 配置、监控与管理

    RMAN 备份详解

    RMAN 还原与恢复

    RMAN catalog 的创建和使用

    基于catalog 创建RMAN存储脚本

    基于catalog 的RMAN 备份与恢复

    RMAN 备份路径困惑

    自定义 RMAN 显示的日期时间格式

    只读表空间的备份与恢复

    Oracle 基于用户管理的不完全恢复

    理解 using backup controlfile

    使用RMAN实现异机备份恢复(WIN平台)

    使用RMAN迁移文件系统数据库到ASM

    基于Linux下 Oracle 备份策略(RMAN)

    Linux 下RMAN备份shell脚本

    使用RMAN迁移数据库到异机

    RMAN 提示符下执行SQL语句

    Oracle 基于 RMAN 的不完全恢复(incomplete recovery by RMAN)

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
7月前
|
SQL Oracle 关系型数据库
Oracle-使用切片删除的方式清理非分区表中的超巨数据
Oracle-使用切片删除的方式清理非分区表中的超巨数据
117 1
|
存储 关系型数据库 MySQL
详述查看 MySQL 数据文件存储位置的方法
详述查看 MySQL 数据文件存储位置的方法
1094 0
|
存储 Oracle 关系型数据库
Oracle 数据库表空间不足拓展方法实例演示,表空间剩余大小查看,通过新增表空间文件拓展表空间,表空间文件路径查看
Oracle 数据库表空间不足拓展方法实例演示,表空间剩余大小查看,通过新增表空间文件拓展表空间,表空间文件路径查看
270 0
Oracle 数据库表空间不足拓展方法实例演示,表空间剩余大小查看,通过新增表空间文件拓展表空间,表空间文件路径查看
|
SQL 测试技术 数据库
[20180529]克隆数据库与dblinks注意.txt
[20180529]克隆数据库与dblinks注意.txt --//在做数据库克隆,一般情况下给开发做测试,要注意一个细节问题,就是数据库内建立的dblink. --//有可能导致一些异常情况,特别是国内环境生产数据库与测试数据库没有分开的情况下,很有可能导致 --//无意中窜改生产系统的数据.
1162 0
|
SQL Oracle 关系型数据库
Oracle数据库表信息,序列,视图等导出,导入。(数据库备份和恢复)
数据导出 1、  打开PL/SQL,找到 选择表、将用户相关的索引,序列、用户信息等导出来 2、  找到Exporttable 选择要导出的表的数据等,注意:导成dmp格式的数据文件 数据导入 1.以管理员方式登录 2.将数据库导入 下面是表结构, 3、数据导入的过程    
2464 0
|
SQL Go 数据库
数据库改名系列(数据库名,逻辑名,物理文件名)
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 某系统设计的不是很合理,库很多,图形化操作分离都得搞半天,各种改名也就更浪费时间了,于是引入了命令~(SQLServer现在已经在Linux里面跑了,咱们也得跟上时代) 1.
1010 0