RMAN高级应用之不同环境下的复制流程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RMAN高级应用之不同环境下的复制流程相关的知识,希望对你有一定的参考价值。

参考技术A

  不同配置决定不同的复制的流程

  一 远程站点相同路径结构的复制

  Duplicating a Database on a Remote Host with the Same Directory Structure

  对于这种选择而言 操作实在太过简单 你甚至不需要修改初始化参数文件或者重命名复制的数据文件(可惜 做测试的话这却不能做为我们的首选 一般测试都只有一台机器 难道让我再虚拟个操作系统?)如果是多台机器的话 这种操作非常省事 步骤也很少

   创建辅助实例

   Rman连接并运行duplicate命令 结束

  确实太简单的是吧 好吧那我来给你找点麻烦 注意第 步 其执行是有几个先决条件的 或者说伟大的oracle大人又一次下放了它高贵的权力 而给你来做出选择 如下

  如果没有配置自动分配通道的话 表忘记至少手工指定 条辅助通道

  不要忘记指定NOFILENAMECHECK参数

  就像前面说的 如果辅助实例并非服务器端初始化参数文件启动 表忘记指定PFILE参数 更加表忘记该文件必须在运行RMAN的客户端上

  例如 假设你配置了自动分配通道 并且决定使用pfile启动辅助实例 那么在RMAN连接到目标库和辅助实例之后 只需要执行下列

  

  DUPLICATE TARGET DATABASE TO dupdb   PFILE = F:\\oracle\\product\\ \\admin\\jssdup\\pfile\\init ora   NOFILENAMECHECK;

  最后 RMAN会自动以RESETLOGS方式打开数据库并重建REDO LOGS 竣工

  二 远程站点不同路径结构的复制

  Duplicating a Database on a Remote Host with a Different Directory Structure

  如果副本数据库创建在远程站点 并且目录结构也不一致 那么你必须修改几个初始化参数值以便副本数据库的数据文件能够在新的目录结构存取 这种类型的复制又可以细分成几个小类

   在初始化参数中重命名复制文件和日志文件 复制步骤如下

  a) 首先还是创建辅助实例 注意初始化参数的配置 按下列的方式进行一些调整

  ? 浏览初始化参数中以_DEST结尾的参数以及包含路径的参数 确认这些路径对即将创建的副本数据库有效

  ? 设置DB_FILE_NAME_CONVERT参数 让其自动转换数据文件路径

  ? 设置LOG_FILE_NAME_CONVERT参数 让其自动转换日志文件路径

  所谓道有千条我取其一 除了上述方式之外呢 还有很多其它方法来指定文件存放路径 比如CONFIGURE AUXNAME或SET NEWNAME命令等等 不过此处是在写初始化参数中重命名类型的复制 就不多占篇章了 后面有章节专门讲解 感兴趣的朋友不妨keep你的好奇心 往下看 )

  b) RMAN连接并执行duplicate命令 结束

  在这里同样需要注意辅助通道的分配和pfile的加载(如果使用pfile的话)

  例如 我们使用自动分配通道 并且辅助实例使用服务器端初始化参数文件 这下dulicate命令更简单了

  DUPLICATE TARGET DATABASE TO dupdb

  这种方式主要的工作都在创建辅助实例上

   在Duplicate命令中重命名数据 日志文件 复制步骤如下

  a 创建辅助实例

  b RMAN连接运行Duplicate命令 注意此处需要加些参数如下

  ? 通道 还是通道!如果没有自动分配通道 则至少要手工指定一条辅助通道

  ? 通过LOGFILE子句指定副本数据库redo logs文件地址大小等

  ? 通过DB_FILE_NAME_CONVERT转换原数据文件路径到新路径

  ? pfile 又见pfile 如果使用了pfile的话 表忘记指定pfile参数

  例如 我们使用自动分配通道 但辅助实例未使用服务器端初始化参数文件 手工指定日志文件数据文件路径 示例如下

  

  DUPLICATE TARGET DATABASE TO dupdb   PFILE = F:\\oracle\\product\\ \\admin\\jssdup\\pfile\\init ora   DB_FILE_NAME_CONVERT=(F:\\oracle\\oradata\\jssweb\\ F:\\oracle\\oradata\\jssdup\\)   LOGFILE    F:\\oracle\\oradata\\jssdup\\redo log SIZE M    F:\\oracle\\oradata\\jssdup\\redo log SIZE M    F:\\oracle\\oradata\\jssdup\\redo log SIZE M;

   使用SET NEWNAME命令重命名数据文件 复制步骤如下

  a 创建辅助实例

  b RMAN连接并按下列步骤执行

  ? 配置通道

  ? 使用SET NEWNAME命令设置数据文件新路径

  ? Duplicate命令设置logfile 如辅助实例采用pfile要加载pfile

  本节重点是SET NEWNAME命令格式 见例

  

  RUN      # set new filenames for the datafiles   SET NEWNAME FOR DATAFILE TO F:\\oracle\\oradata\\jssdup\\system dbf ;   SET NEWNAME FOR DATAFILE TO F:\\oracle\\oradata\\jssdup\\undotbs dbf ;      # issue the duplicate mand   DUPLICATE TARGET DATABASE TO dupdb   # create at least o online redo log groups      

   使用CONFIGURE AUXNAME命令重命名数据文件 复制步骤如下

  略与上同 不详述 唯一不同处即是CONFIGURE AUXNAME命令格式 如例 而且configure命令是在run块外执行的

  # configure the new desired filenames

  CONFIGURE AUXNAME FOR DATAFILE TO F \\oracle\\oradata\\jssdup\\system dbf

  CONFIGURE AUXNAME FOR DATAFILE TO F \\oracle\\oradata\\jssdup\\undotbs dbf

  # …… add more CONFIGURE AUXNAME mands as needed

  不过需要注意的是 duplicate执行完之后 推荐清除CONFIGURE AUXNAME 这样就不会对未来的类似操作造成影响

  # clear specified auxiliary names for the datafiles

  CONFIGURE AUXNAME FOR DATAFILE CLEAR

  CONFIGURE AUXNAME FOR DATAFILE CLEAR

  三 本地创建

  Creating a Duplicate Database on the Local Host

  与第二种 远程站点不同路径结构的复制 有 %以上的相似性 唯一不同的是 本地创建的话需要注意DB_NAME与目标数据库不可相同 这点主要体现在辅助实例中初始化参数的配置里 其它的操作步骤可以完全复制第二种中介绍的各种方法 所以也就不详述了 )

  除此之外呢 还有比如向ASM存储系统复制 或向OMF存储复制等等 复制流程与上基本大同小异 不过就是初始化参数文件中设置不同的参数 或者将参数设置成不同的值罢了

lishixinzhi/Article/program/Oracle/201311/18270

RAC 之 RMAN 恢复

RAC 下的RMAN 讲究的是备份和还原的策略要一致。备份策略的不同,会导致备份结果的分步不同,进而影响恢复的策略和步骤。一般情况下,恢复策略和备份策略必须是对应的。如果备份策略进行了修改,那么恢复也应该采用相同的策略。之前我们的RMAN 备份参考:

RAC 之 RMAN 备份

http://blog.csdn.net/tianlesoftware/archive/2010/09/22/5901053.aspx

 

 

 

这里面有2个注意事项:

1.       执行恢复的节点要能看到所有节点的归档文件。 这个在RAC 备份那篇里已经讲了方法,就是把归档文件传送到其他节点,这样就能够看到所有节点的归档文件了。

2.       备份集的存放问题。 如果我们放在共享设备上,那么节点可以访问所有的备份文件,那么就可以直接进行恢复操作。 如果不是放在共享设备,可以通过NFS mount来挂载,或者设置2个通道。 分别指向多个实例。

 

 

示例:

 

1.1 先停止数据库

 

[[email protected] bin]$ srvctl stop db -d orcl

[[email protected] bin]$ crs_stat -t

Name           Type           Target    State     Host

------------------------------------------------------------

ora.orcl.db    application    OFFLINE   OFFLINE

ora....oltp.cs application    OFFLINE   OFFLINE

ora....cl1.srv application    OFFLINE   OFFLINE

ora....cl2.srv application    OFFLINE   OFFLINE

ora....l1.inst application    OFFLINE   OFFLINE

ora....l2.inst application    OFFLINE   OFFLINE

ora....SM1.asm application    ONLINE    ONLINE    rac1

ora....C1.lsnr application    ONLINE    ONLINE    rac1

ora.rac1.gsd   application    ONLINE    ONLINE    rac1

ora.rac1.ons   application    ONLINE    ONLINE    rac1

ora.rac1.vip   application    ONLINE    ONLINE    rac1

ora....SM2.asm application    ONLINE    ONLINE    rac2

ora....C2.lsnr application    ONLINE    ONLINE    rac2

ora.rac2.gsd   application    ONLINE    ONLINE    rac2

ora.rac2.ons   application    ONLINE    ONLINE    rac2

ora.rac2.vip   application    ONLINE    ONLINE    rac2

 

 

1.2 将节点启动到mount 状态:

 

备份集存在在2个节点的情况(2个节点的RAC),在这种情况下,需要分配2个通道分别连接对应的节点。 每个节点都需要启动到mount状态。 因为每个节点都有备份文件,所以在每个节点都需要执行restore,如果没有启动的话,就会报错,对于备份集存放在共享设备的就不用这么麻烦。

 

 

[[email protected] bin]$ export ORACLE_SID=orcl1

[[email protected] bin]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Mon Sep 27 02:56:55 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database (not started)

 

RMAN> startup mount;

Oracle instance started

database mounted

Total System Global Area     180355072 bytes

Fixed Size                     1218388 bytes

Variable Size                100665516 bytes

Database Buffers              75497472 bytes

Redo Buffers                   2973696 bytes

 

[[email protected] bin]$ export ORACLE_SID=orcl2

[[email protected] bin]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Mon Sep 27 02:57:44 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database (not started)

 

RMAN> startup mount;

Oracle instance started

database mounted

Total System Global Area     180355072 bytes

Fixed Size                     1218388 bytes

Variable Size                 83888300 bytes

Database Buffers              92274688 bytes

Redo Buffers                   2973696 bytes

 

 

1.3            完全恢复

 

在任意一个节点上执行:

 

RMAN> RUN {

allocate channel c1 device type disk connect  ‘sys/[email protected]‘;

allocate channel c2 device type disk connect  ‘sys/[email protected]‘;

restore database;

recover database;

}

2> 3> 4> 5> 6>

using target database control file instead of recovery catalog

allocated channel: c1

channel c1: sid=146 instance=orcl1 devtype=DISK

 

allocated channel: c2

channel c2: sid=146 instance=orcl2 devtype=DISK

 

Starting restore at 27-SEP-10

 

skipping datafile 2; already restored to file +DATA/orcl/datafile/undotbs1.278.730181053

skipping datafile 3; already restored to file +DATA/orcl/datafile/sysaux.277.730181053

skipping datafile 5; already restored to file +DATA/orcl/datafile/undotbs2.284.730181347

skipping datafile 1; already restored to file +DATA/orcl/datafile/system.276.730181051

skipping datafile 4; already restored to file +DATA/orcl/datafile/users.279.730181053

skipping datafile 7; already restored to file +DATA/orcl/datafile/anhuianqing.dbf

Finished restore at 27-SEP-10

 

Starting recover at 27-SEP-10

 

starting media recovery

media recovery complete, elapsed time: 00:00:04

 

Finished recover at 27-SEP-10

released channel: c1

released channel: c2

 

RMAN> sql ‘alter database open‘;

sql statement: alter database open

 

 

1.4 不完全恢复

 

 

1.4.1基于时间点的恢复

RMAN> RUN {

allocate channel c1 device type disk connect  ‘sys/[email protected]‘;

allocate channel c2 device type disk connect  ‘sys/[email protected]‘;

set until time "to_date(‘2010/9/27 03:30:00‘,‘yyyy/mm/dd hh24:mi:ss‘)";

restore database;

recover database;

}

2> 3> 4> 5> 6> 7> 8>

allocated channel: c1

channel c1: sid=143 instance=orcl1 devtype=DISK

 

allocated channel: c2

channel c2: sid=146 instance=orcl2 devtype=DISK

 

executing command: SET until clause

 

Starting restore at 27-SEP-10

 

channel c1: starting datafile backupset restore

channel c1: specifying datafile(s) to restore from backup set

restoring datafile 00001 to +DATA/orcl/datafile/system.276.730181051

restoring datafile 00004 to +DATA/orcl/datafile/users.279.730181053

restoring datafile 00007 to +DATA/orcl/datafile/anhuianqing.dbf

channel c1: reading from backup piece /u01/backup/orcl_2blotmnp_1_1_20100927

channel c2: starting datafile backupset restore   -- 这里使用了2个通道,因为这个测试的备份集是放在2个节点的。

channel c2: specifying datafile(s) to restore from backup set

restoring datafile 00002 to +DATA/orcl/datafile/undotbs1.278.730181053

restoring datafile 00003 to +DATA/orcl/datafile/sysaux.277.730181053

restoring datafile 00005 to +DATA/orcl/datafile/undotbs2.284.730181347

channel c2: reading from backup piece /u01/backup/orcl_2clotmno_1_1_20100927

channel c2: restored backup piece 1

piece handle=/u01/backup/orcl_2clotmno_1_1_20100927 tag=ORCL_HOT_DB_BK

channel c2: restore complete, elapsed time: 00:01:21

channel c1: restored backup piece 1

piece handle=/u01/backup/orcl_2blotmnp_1_1_20100927 tag=ORCL_HOT_DB_BK

channel c1: restore complete, elapsed time: 00:02:48

Finished restore at 27-SEP-10

 

Starting recover at 27-SEP-10

 

starting media recovery

media recovery complete, elapsed time: 00:00:03

 

Finished recover at 27-SEP-10

 

released channel: c1

released channel: c2

 

RMAN>

 

 

恢复完成之后,在两个节点执行:

alter database open resetlogs;

打开数据即可。

 

 

1.4.2 基于SCN的恢复

 

当前SCN 查看方法:

SQL> select current_scn from v$database;

CURRENT_SCN

-----------

1118216

 

 

RMAN> RUN {

allocate channel c1 device type disk connect  ‘sys/[email protected]‘;

allocate channel c2 device type disk connect  ‘sys/[email protected]‘;

restore database until scn 1118215 ;

recover database until scn 1118215 ;

}

2> 3> 4> 5> 6>

using target database control file instead of recovery catalog  -- 非catalog 模式, 这种模式备份控制文件非常重要

allocated channel: c1

channel c1: sid=142 instance=orcl1 devtype=DISK

 

allocated channel: c2

channel c2: sid=151 instance=orcl2 devtype=DISK

 

Starting restore at 27-SEP-10

 

channel c1: starting datafile backupset restore

channel c1: specifying datafile(s) to restore from backup set

restoring datafile 00001 to +DATA/orcl/datafile/system.276.730181051

restoring datafile 00004 to +DATA/orcl/datafile/users.279.730181053

restoring datafile 00007 to +DATA/orcl/datafile/anhuianqing.dbf

channel c1: reading from backup piece /u01/backup/orcl_2blotmnp_1_1_20100927

channel c2: starting datafile backupset restore

channel c2: specifying datafile(s) to restore from backup set

restoring datafile 00002 to +DATA/orcl/datafile/undotbs1.278.730181053

restoring datafile 00003 to +DATA/orcl/datafile/sysaux.277.730181053

restoring datafile 00005 to +DATA/orcl/datafile/undotbs2.284.730181347

channel c2: reading from backup piece /u01/backup/orcl_2clotmno_1_1_20100927

channel c2: restored backup piece 1

piece handle=/u01/backup/orcl_2clotmno_1_1_20100927 tag=ORCL_HOT_DB_BK

channel c2: restore complete, elapsed time: 00:03:58

channel c1: restored backup piece 1

piece handle=/u01/backup/orcl_2blotmnp_1_1_20100927 tag=ORCL_HOT_DB_BK

channel c1: restore complete, elapsed time: 00:05:47

Finished restore at 27-SEP-10

 

Starting recover at 27-SEP-10

 

starting media recovery

 

archive log thread 1 sequence 44 is already on disk as file /u02/rac1_arch/1_44_730181171.dbf

archive log thread 2 sequence 38 is already on disk as file /u02/rac1_arch/2_38_730181171.dbf

archive log thread 1 sequence 1 is already on disk as file /u02/rac1_arch/1_1_730784806.dbf

archive log thread 2 sequence 1 is already on disk as file /u02/rac2_arch/2_1_730784806.dbf

archive log filename=/u02/rac1_arch/1_44_730181171.dbf thread=1 sequence=44

archive log filename=/u02/rac1_arch/2_38_730181171.dbf thread=2 sequence=38

archive log filename=/u02/rac2_arch/2_1_730784806.dbf thread=2 sequence=1

media recovery complete, elapsed time: 00:00:09

Finished recover at 27-SEP-10

released channel: c1

released channel: c2

 

恢复结束,用 alter database open resetlogs 打开数据库。

 

 

小结:

以上都是简单的测试,具体情况还是要具体对待。 经验积累的多了,就知道怎么处理了。 总之,备份重于一切。 有了备份,才有恢复的可能。

 

 转:http://blog.csdn.net/tianlesoftware/article/details/5909912

以上是关于RMAN高级应用之不同环境下的复制流程的主要内容,如果未能解决你的问题,请参考以下文章

不同环境下的应用配置管理

12C CDB模式下RMAN备份与恢复

RAC 之 RMAN 备份

设计模式之状态模式

ORACLERMAN各种情况下的备份恢复

MySQL数据库运维之主从复制延迟问题排查