RMAN备份集恢复DB到其他机器(2复制方法)

本文介绍了使用RMAN DUPLICATE命令在保留原有数据库的基础上,通过备份创建副本数据库的过程。详细步骤包括:备份主数据库并拷贝到副本机器、配置副本DB环境、启动副本数据库至nomount状态、运行RMAN复制命令等。同时,文章还提到了一些高级用法,如跳过文件名检测、指定PFILE、恢复到特定时间点等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 使用RMAN备份集恢复DB到其他机器  (2复制方法)

    使用  RMAN  DUPLICATE  命令可 以在保 留目 标数 据库 的基础上 依靠目标 数 据库(Target  Database)的备份创建一个副本数据库(Duplicate  Database)  .该副本即可与目标数 据库完全相同,也可仅包含目标数据库表空间的一部子集。目标站点(Target  Site)以及副 本站点(Duplicate Site)甚至可以在同一台机器上。

    (  生成新的唯一的 DBID,如果控制文件中仍保存有备份信息,可以不连接 Catalog  )

    步骤:

    1.准备工作,配置副本DB环境

    1.  备份主数据库(包括数据文件、控制文件以及所有归档),并把该备份集拷贝到副本 数据库机器同样的目录下。

    2.  拷贝主数据库的初始化参数文件 pfile 到副本数据库机器上,并根据需要作相应修改,创建密码文件。

    3.  配置主数据库到副本数据库的连接。

    2.启动副本数据库到  nomount下,目录数据库必须MOUNT (或OPEN)

    $ sqlplus /nolog SQL> conn / as sysdba SQL> startup nomount

    3.运行RMAN,分别连接主数据库与副本数据库实例

    控制文件中保存有备份信息,可以不连接 Catalog

    在副本数据库上:$ rman target sys/change_on_install@MING auxiliary /

    4.运行复制命令

    如果没有配置自动分配通道的话,需要手工指定至少  1  条辅助通道。

    DUPLICATE命令将自动完成:将还原所有数据文件,重新创建控制文件,并利 用新的参数文件启动恢复数据库到一致状态,最后用  resetlog  方式打开数据库,并 重建  redolog

    RMAN> RUN { ALLOCATE AUXILIARY CHANNEL aux1 DEVICE TYPE DISK;duplicate target database tocrmnofilenamecheck; RELEASE CHANNEL aux1;}

    5.重建临时表空间,立即备份数据库

    SQL>  alter  tablespace  temp  add  tempfile  '/u05/oracle/oradata/crm/temp01.dbf'  size 10M;

    附:Duplicate 复制命令的一些高级用法:

    1.NOFILENAMECHECK异机恢复需要指定  NOFILENAMECHECK,可以跳过文件名检测,避免  oracle  错 误的领会你的操作意图。

    2.指定PFILE如果辅助实例不是用 SPFILE启动,需要指定  PFILE  参数,PFILE文件必须放在运行  RMAN  的客户端上。

    3.跳过不需要复制的表空间要跳过只读表空间,在执行 duplicate 命令时指定  SKIP READONLY 子句即可。

    要跳过离线表空间,在执行 duplicate 命令之前将其置为  OFFLINE NORMAL 状态即可,RMAN  复制时会跳过只读或离线表空间的数据文件。

    要跳过正常的表空间,指定 SKIP TABLESPACE ts_name, …

    4.恢复到以前的时间点要恢复到以前的时间点,在 duplicate 命令中指定  UNTIL TIME 'SYSDATE-1' 5.创建过程中重命名控制文件可以使用 restore controlfile from …;或者 dbms_backup_restore 包恢复出控件文件,然后在初始化参数文件 PFILE 中进行正确的设置。

    6.创建过程中重命名在线日志文件1.执行  duplicate 命名时指定 LOGFILE子句,手工设置 redo logs 文件名。 例:LOGFILE GROUP 1 ('?/oradata/newdb/redo01_1.log',

    '?/oradata/newdb/redo01_2. log') SIZE 200K,)

    2.副本数据库初始化参数文件 PFILE中设置 LOG_FILE_NAME_CONVERT LOG_FILE_NAME_CONVERT = 'string1' , 'string2' , 'string3' , 'string4' , ……;将  strin1 替换为 string2,string3 替换为 string4 7.创建过程中重命名数据文件,或改变数据库文件的新的路径1.在初始化参数中重命名:DB_FILE_NAME_CONVERT=‘xxxx’,‘yyyy’2.在 Duplicate Duplicate Duplicate 命令中重命名数据文件: duplicate target database to newdb DB_FILE_NAME_CONVERT=('xxxx', 'yyyyy ');3.使用 SET NEWNAME  命令重命名数据文件SET NEWNAME FOR DATAFILE 1 TO '/xxx/xxx.dbf';4.使用  CONFIGURE AUXNAME  命令重命名数据文件CONFIGURE AUXNAME FOR DATAFILE 1 TO '/xxxx/xxx.dbf';5.重命名临时文件路径SET NEWNAME FOR TEMPFILE '/xxx/xxx.dbf' TO '/yyy/xxx.dbf';

    例:一个比较复杂的复制命令如下:

    RMAN> RUN {

    allocate auxiliary channel newdb1 device type sbt;

    duplicate target database to newdb

    DB_FILE_NAME_CONVERT=('/h1/oracle/dbs/trgt/','/h2/oracle/oradata/newdb/')

    UNTIL TIME 'SYSDATE-1'       # specifies incomplete recovery

    SKIP TABLESPACE cmwlite, drsys, example        # skip desired tablespaces

    PFILE = ?/dbs/initNEWDB.ora

    LOGFILE

    GROUP 1 ('?/oradata/newdb/redo01_1.log',

    '?/oradata/newdb/redo01_2. log') SIZE 200K,

    GROUP 2 ('?/oradata/newdb/redo02_1. log'',

    '?/oradata/newdb/redo02_2. log'') SIZE 200K

    GROUP 3 ('?/oradata/newdb/redo03_1. log'',

    '?/oradata/newdb/redo03_2. log'') SIZE 200K REUSE;

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值