RAC 之 RMAN 恢复_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3735 | 回复: 0   主题: RAC 之 RMAN 恢复        下一篇 
大红薯
注册用户
等级:少校
经验:1440
发帖:159
精华:0
注册:2011-7-21
状态:离线
发送短消息息给大红薯 加好友    发送短消息息给大红薯 发消息
发表于: IP:您无权察看 2011-8-5 16:06:36 | [全部帖] [楼主帖] 楼主

之前整理的RMAN 有关还原的文章:

     RMAN 系列(五) ---- RMAN 还原 与 恢复

http://blog.csdn.net/tianlesoftware/archive/2010/07/11/5700474.aspx


      RMAN 备份与恢复 实例

http://blog.csdn.net/tianlesoftware/archive/2009/10/20/4699320.aspx


         Oracle Rman跨resetlogs版本恢复

http://blog.csdn.net/tianlesoftware/archive/2009/10/17/4682463.aspx


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 先停止数据库

[oracle@rac1 bin]$ srvctl stop db -d orcl
[oracle@rac1 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,如果没有启动的话,就会报错,对于备份集存放在共享设备的就不用这么麻烦。

[oracle@rac1 bin]$ export ORACLE_SID=orcl1
[oracle@rac1 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
[oracle@rac2 bin]$ export ORACLE_SID=orcl2
[oracle@rac2 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/oracle@orcl1';
      allocate channel c2 device type disk connect 'sys/oracle@orcl2';
      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/oracle@orcl1';
      allocate channel c2 device type disk connect 'sys/oracle@orcl2';
      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/oracle@orcl1';
      allocate channel c2 device type disk connect 'sys/oracle@orcl2';
      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 打开数据库。

小结:

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




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论