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

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

 

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

    基于 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)

时间: 2024-09-20 19:29:53

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

Oracle数据库数据文件位置修改方法

 数据文件就是以dbf结尾的文件也也就是用来存储我们数据的一个文件了,此文件通常比较大所以我们一般存储在空间比较大的目录了,下面一起来看看Oracle数据库数据文件位置修改方法   如何更改Oracle数据文件的位置 A:归档模式下 1.在sqlplus中连接到要移动文件的Oracle数据库,然后执行如下SQL语句查看Oracle数据库文件位置: SQL>select file_name   from   sys.dba_data_files; FILE_NAME ---------------

基于 RMAN 的同机数据库克隆

Oracle数据库克隆,也叫着Oracle数据库复制,可以通过基于用户管理的方式来完成,也可以基于RMAN方式来实现.而且Oracle建议使用RMAN方式来实现,因为它简单易用,隐藏其复杂的逻辑,仅仅是执行一条duplicate命令就可以喝茶了.当然,前期的准备工作也是不可少滴,如创建相应的dump目录,准备参数文件,配置监听等等.本文描述了Oracle 11g下如何使用RMAN实现同机克隆数据库.   1.RMAN克隆的几种类型    a.利用RMAN备份克隆并访问目标数据库(也就是原数据库)

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

mysql数据库存储路径更改  使用了VPS一段时间之后发现磁盘空间快满了.本人的VPS在购买的时候买了500gb的磁盘,提供商赠送了20GB的高性能系统磁盘.这样系统就有两个磁盘空间了.在初次安装mysql 的时候将数据库目录安装在了系统盘.(第一个磁盘)使用了一段时间之后数据库存储量变大,快将20GB的存放空间占满了.因此必须将存放数据空间换地方了.嘿嘿下面是简单的操作了,不合理之处还请大侠们指点. 操作步骤:     1.检查mysql数据库存放目录     mysql -u root -

详解SQL Server如何修改数据库物理文件的存在位置

前言 大家应该都知道SQL Server创建新库时,默认会把数据存放在C盘中,一旦数据库中的存储数据多了以后,C盘的空间就会所剩无几.解决方案是将存放数据的物理文件迁移到其他盘. 具体流程为: 1.将现有的数据库脱机 ALTER DATABASE DB1 SET OFFLINE WITH ROLLBACK IMMEDIATE; 2.将数据库文件移到新的位置 文件复制完成以后需要:右键-属性-安全-在组或用户名处添加Authenticated Users-更改该组权限为完全权限,否则接下来的操作会

基于用户管理的同机数据库克隆

      Oracle 同机数据库复制或克隆经常用于提供测试或开发环境.对于生成的克隆数据库有多种方式,如使用冷备方式进行数据库克隆(需要使用nid修改db_name),热备方式克隆数据库,rman方式克隆数据库等等.由于是同机克隆,因此目标数据库与原数据库必须位于不同的目录,其次,使用不用的数据库名称(db_name).本文主要列出使用基于用户管理的热备方式来进行数据库克隆的步骤并给出演示.   1.热备克隆步骤    a.创建目标数据库目录    b.创建目标数据库密码文件(orapwd)

使用rman恢复控制文件

没有使用catalog的情况:控制文件自动备份将控制文件和spfile放在一个文件里进行备份,默认位置为?/dbs(windows在?/database).这个位置可以使用如下语句进行更改:CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:\oracle\rman\ctl_%F.ctl';恢复默认值:CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE D

Oracle数据库密码文件的使用与维护

oracle|数据|数据库 概要:Oracle关系数据库系统以其卓越的性能获得了广泛的应用,而保证数据库的安全性是数据库管理工作的重要内容.本文是笔者在总结Oracle数据库安全管理工作的基础上,对Oracle数据库系统密码文件的创建.使用和维护作了详细的介绍,供大家参考. 关键词:Oracle数据库密码文件 在Oracle数据库系统中,用户如果要以特权用户身份(INTERNAL/SYSDBA/SYSOPER)登录Oracle数据库可以有两种身份验证的方法:即使用与操作系统集成的身份验证或使用O

Oracle RMAN备份(三)联机RMAN 数据库备份

七. 联机RMAN 数据库备份 7.1 联机数据库备份 要使用RMAN执行联机备份操作,数据库必须置于Archivelog 模式. 如果不在归档模式,则尝试联机备份时RMAN就会生成一个错误. Oracle 归档与非归档的切换 http://blog.csdn.net/tianlesoftware/archive/2009/10/19/4693470.aspx 连接备份示例: RMAN> Configure default device type to disk; RMAN> configur

Oracle RMAN备份(一)脱机RMAN 数据库备份

一. RMAN 备份的一些优点 1. RMAN 会检测和报告损坏的数据块. 2. 不需要将表空间置入热备份模式,RMAN 就可以连接备份数据库. 热备份期间会额外的生成重做日志. 3. RMAN 会自动跟踪新的数据文件和表空间,这样就不再需要在脚本中添加新的表空间和数据文件. 4. RMAN 只备份使用过的数据库(直至最高使用标记(High wate mark)),这样RMAN 备份映像通常小于联机备份的备份脚本. 5. RMAN 提供备份映像的实际压缩. 6. RMAN 提供自动且方便的备份,