RMAN备份恢复——RAC环境数据库的备份(三)

RAC环境的备份、恢复和普通数据库的备份、恢复是有一些区别的。

RMAN备份恢复——RAC环境数据库的备份(一):http://yangtingkun.itpub.net/post/468/285260

RMAN备份恢复——RAC环境数据库的备份(二):http://yangtingkun.itpub.net/post/468/287076

这篇介绍基于裸设备的RAC环境下的恢复。


上一篇文章已经介绍了采用带CONNECT语句的方式备份,这里介绍对应的恢复方法。

首先备份并删除上次全备份以来的归档日志,然后准备开始恢复:

RMAN> run
2> {
3> allocate channel c1 device type disk format '/data1/backup/%U' connect sys/test@testrac1;
4> allocate channel c2 device type disk format '/data1/backup/%U' connect sys/test@testrac2;
5> backup archivelog all delete all input;
6> }

分配的通道: c1通道 c1: sid=288 实例=testrac1 devtype=DISK

分配的通道: c2通道 c2: sid=294 实例=testrac2 devtype=DISK

启动 backup 14-5 -07当前日志已存档通道 c1: 正在启动存档日志备份集通道 c1: 正在指定备份集中的存档日志输入存档日志线程 =1 序列 =181 记录 ID=328 时间戳=622553558输入存档日志线程 =1 序列 =182 记录 ID=330 时间戳=622553686输入存档日志线程 =1 序列 =183 记录 ID=333 时间戳=622559736通道 c1: 正在启动段 1 14-5 -07通道 c2: 正在启动存档日志备份集通道 c2: 正在指定备份集中的存档日志输入存档日志线程 =2 序列 =101 记录 ID=329 时间戳=622553567输入存档日志线程 =2 序列 =102 记录 ID=331 时间戳=622553690输入存档日志线程 =2 序列 =103 记录 ID=332 时间戳=622559728通道 c2: 正在启动段 1 14-5 -07通道 c2: 已完成段 1 14-5 -07段句柄=/data1/backup/2rihn0fk_1_1 标记=TAG20070514T131536 注释=NONE通道 c2: 备份集已完成, 经过时间:00:01:06通道 c2: 正在删除存档日志存档日志文件名 =/data1/archivelog/2_101_618591128.dbf 记录 ID=329 时间戳 =622553567存档日志文件名 =/data1/archivelog/2_102_618591128.dbf 记录 ID=331 时间戳 =622553690存档日志文件名 =/data1/archivelog/2_103_618591128.dbf 记录 ID=332 时间戳 =622559728通道 c1: 已完成段 1 14-5 -07段句柄=/data1/backup/2qihn0fp_1_1 标记=TAG20070514T131536 注释=NONE通道 c1: 备份集已完成, 经过时间:00:01:09通道 c1: 正在删除存档日志存档日志文件名 =/data1/archivelog/1_181_618591128.dbf 记录 ID=328 时间戳 =622553558存档日志文件名 =/data1/archivelog/1_182_618591128.dbf 记录 ID=330 时间戳 =622553686存档日志文件名 =/data1/archivelog/1_183_618591128.dbf 记录 ID=333 时间戳 =622559736完成 backup 14-5 -07释放的通道: c1释放的通道: c2

在恢复之前,需要将数据库关闭,通过rman启动实例并准备恢复:

$ srvctl stop db -d testrac

下面准备通过RMAN进行数据库的恢复。由于RAC的备份是同时备份到两个节点的本地硬盘上,因此恢复的时候也应该两个节点同时进行RESTORE操作。

可以在两个节点上分别启动RMAN,将数据库处于STARTUP MOUNT状态,然后就可以在任意一个节点上执行RESTORE操作:

$ rman target /

恢复管理器: Release 10.2.0.3.0 - Production on 星期一 5 14 13:46:25 2007

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

已连接到目标数据库 (未启动)

RMAN> startup mount

Oracle 实例已启动数据库已装载

系统全局区域总计 2147483648 字节

Fixed Size 2031480 字节
Variable Size 335544456
字节
Database Buffers 1795162112
字节
Redo Buffers 14745600
字节

RMAN> exit

恢复管理器完成。

另一个节点:

$ rman target /

恢复管理器: Release 10.2.0.3.0 - Production on 星期一 5 14 13:46:41 2007

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

已连接到目标数据库 (未启动)

RMAN> startup mount

Oracle 实例已启动数据库已装载

系统全局区域总计 2147483648 字节

Fixed Size 2031480 字节
Variable Size 335544456
字节
Database Buffers 1795162112
字节
Redo Buffers 14745600
字节

RMAN> run
2> {
3> allocate channel c1 device type disk format '/data1/backup/%U' connect sys/test@testrac1;
4> allocate channel c2 device type disk format '/data1/backup/%U' connect sys/test@testrac2;
5> restore database;
6> }

使用目标数据库控制文件替代恢复目录分配的通道: c1通道 c1: sid=313 实例=testrac1 devtype=DISK

分配的通道: c2通道 c2: sid=316 实例=testrac2 devtype=DISK

启动 restore 14-5 -07

通道 c2: 正在开始恢复数据文件备份集通道 c2: 正在指定从备份集恢复的数据文件正将数据文件00002恢复到+DISK/testrac/datafile/undotbs1.263.618591197正将数据文件00003恢复到+DISK/testrac/datafile/sysaux.264.618591225正将数据文件00004恢复到+DISK/testrac/datafile/undotbs2.266.618591249正将数据文件00007恢复到+DISK/testrac/datafile/zhejiang02.dbf正将数据文件00011恢复到+DISK/testrac/datafile/zhejiang04.dbf正将数据文件00013恢复到+DISK/testrac/datafile/lt_index_ts01.dbf正将数据文件00014恢复到+DISK/testrac/datafile/zhejiang06.dbf通道 c2: 正在读取备份段 /data1/backup/2lihmp9f_1_1通道 c1: 正在开始恢复数据文件备份集通道 c1: 正在指定从备份集恢复的数据文件正将数据文件00001恢复到+DISK/testrac/datafile/system.262.618591167正将数据文件00005恢复到+DISK/testrac/datafile/users.267.618591279正将数据文件00006恢复到+DISK/testrac/datafile/zhejiang01.dbf正将数据文件00008恢复到+DISK/testrac/datafile/ndmain01.dbf正将数据文件00009恢复到+DISK/testrac/datafile/zhejiang03.dbf正将数据文件00010恢复到+DISK/testrac/datafile/ndindex01.dbf正将数据文件00012恢复到+DISK/testrac/datafile/zhejiang05.dbf通道 c1: 正在读取备份段 /data1/backup/2kihmp9k_1_1通道 c1: 已恢复备份段 1段句柄 = /data1/backup/2kihmp9k_1_1 标记 = TAG20070514T111250通道 c1: 恢复完成, 用时: 00:17:18通道 c2: 已恢复备份段 1段句柄 = /data1/backup/2lihmp9f_1_1 标记 = TAG20070514T111250通道 c2: 恢复完成, 用时: 00:19:24完成 restore 14-5 -07释放的通道: c1释放的通道: c2

如果只启动了RAC的一个节点,则会导致RMAN出现下面的错误:

MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: restore
命令 ( 05/11/2007 17:55:17 ) 失败
RMAN-06026:
有些目标没有找到 - 终止恢复
RMAN-06100:
没有通道来恢复数据文件14的备份或是副本
RMAN-06100:
没有通道来恢复数据文件13的备份或是副本
RMAN-06100:
没有通道来恢复数据文件11的备份或是副本
RMAN-06100:
没有通道来恢复数据文件7的备份或是副本
RMAN-06100:
没有通道来恢复数据文件4的备份或是副本
RMAN-06100:
没有通道来恢复数据文件3的备份或是副本
RMAN-06100:
没有通道来恢复数据文件2的备份或是副本

下面恢复归档日志:

RMAN> run
2> {
3> allocate channel c1 device type disk format '/data1/backup/%U' connect sys/test@testrac1;
4> allocate channel c2 device type disk format '/data1/backup/%U' connect sys/test@testrac2;
5> restore (archivelog sequence between 179 and 183 thread 1)
6> (archivelog sequence between 99 and 103 thread 2);
7> }

分配的通道: c1通道 c1: sid=313 实例=testrac1 devtype=DISK

分配的通道: c2通道 c2: sid=316 实例=testrac2 devtype=DISK

启动 restore 14-5 -07

通道 c1: 正在启动到默认目标的存档日志恢复通道 c2: 正在启动到默认目标的存档日志恢复通道 c1: 正在恢复存档日志存档日志线程 =1 序列=179通道 c2: 正在恢复存档日志存档日志线程 =2 序列=99通道 c1: 正在恢复存档日志存档日志线程 =1 序列=180通道 c1: 正在读取备份段 /data1/backup/2oihmq8g_1_1通道 c2: 正在恢复存档日志存档日志线程 =2 序列=100通道 c2: 正在读取备份段 /data1/backup/2pihmq8b_1_1通道 c2: 已恢复备份段 1段句柄 = /data1/backup/2pihmq8b_1_1 标记 = TAG20070514T112919通道 c2: 恢复完成, 用时: 00:00:35通道 c2: 正在启动到默认目标的存档日志恢复通道 c2: 正在恢复存档日志存档日志线程 =2 序列=101通道 c2: 正在恢复存档日志存档日志线程 =2 序列=102通道 c2: 正在恢复存档日志存档日志线程 =2 序列=103通道 c2: 正在读取备份段 /data1/backup/2rihn0fk_1_1通道 c1: 已恢复备份段 1段句柄 = /data1/backup/2oihmq8g_1_1 标记 = TAG20070514T112919通道 c1: 恢复完成, 用时: 00:00:52通道 c1: 正在启动到默认目标的存档日志恢复通道 c1: 正在恢复存档日志存档日志线程 =1 序列=181通道 c1: 正在恢复存档日志存档日志线程 =1 序列=182通道 c1: 正在恢复存档日志存档日志线程 =1 序列=183通道 c1: 正在读取备份段 /data1/backup/2qihn0fp_1_1通道 c2: 已恢复备份段 1段句柄 = /data1/backup/2rihn0fk_1_1 标记 = TAG20070514T131536通道 c2: 恢复完成, 用时: 00:01:12通道 c1: 已恢复备份段 1段句柄 = /data1/backup/2qihn0fp_1_1 标记 = TAG20070514T131536通道 c1: 恢复完成, 用时: 00:01:12完成 restore 14-5 -07释放的通道: c1释放的通道: c2

现在面临一个问题,对于还原(RESTORE)操作,可以两个实例同时进行,但是对于恢复(RECOVER)操作,只能一个实例完成。

这就要求一个实例必须能同时看到两个实例的归档日志。可以通过nfs mount等方式来实现,这里采用最简单的方法,将节点2上的归档拷贝到节点1的归档目录下。

RMAN> host 'rcp 172.25.198.223:/data1/archivelog/* /data1/archivelog'
2> ;

主机命令完成

RMAN> run
2> {
3> allocate channel c1 device type disk format '/data1/backup/%U' connect sys/test@testrac1;
4> allocate channel c2 device type disk format '/data1/backup/%U' connect sys/test@testrac2;
5> recover database;
6> }

释放的通道: ORA_SBT_TAPE_1释放的通道: ORA_SBT_TAPE_2释放的通道: ORA_DISK_1释放的通道: ORA_DISK_2分配的通道: c1通道 c1: sid=313 实例=testrac1 devtype=DISK

分配的通道: c2通道 c2: sid=316 实例=testrac2 devtype=DISK

启动 recover 14-5 -07

正在开始介质的恢复

存档日志线程 1 序列 179 已作为文件 /data1/archivelog/1_179_618591128.dbf 存在于磁盘上存档日志线程 1 序列 180 已作为文件 /data1/archivelog/1_180_618591128.dbf 存在于磁盘上存档日志线程 1 序列 181 已作为文件 /data1/archivelog/1_181_618591128.dbf 存在于磁盘上存档日志线程 1 序列 182 已作为文件 /data1/archivelog/1_182_618591128.dbf 存在于磁盘上存档日志线程 1 序列 183 已作为文件 /data1/archivelog/1_183_618591128.dbf 存在于磁盘上存档日志线程 2 序列 99 已作为文件 /data1/archivelog/2_99_618591128.dbf 存在于磁盘上存档日志线程 2 序列 100 已作为文件 /data1/archivelog/2_100_618591128.dbf 存在于磁盘上存档日志线程 2 序列 101 已作为文件 /data1/archivelog/2_101_618591128.dbf 存在于磁盘上存档日志线程 2 序列 102 已作为文件 /data1/archivelog/2_102_618591128.dbf 存在于磁盘上存档日志线程 2 序列 103 已作为文件 /data1/archivelog/2_103_618591128.dbf 存在于磁盘上存档日志文件名 =/data1/archivelog/1_179_618591128.dbf 线程 =1 序列 =179存档日志文件名 =/data1/archivelog/2_99_618591128.dbf 线程 =2 序列 =99存档日志文件名 =/data1/archivelog/2_100_618591128.dbf 线程 =2 序列 =100存档日志文件名 =/data1/archivelog/1_180_618591128.dbf 线程 =1 序列 =180存档日志文件名 =/data1/archivelog/1_181_618591128.dbf 线程 =1 序列 =181存档日志文件名 =/data1/archivelog/2_101_618591128.dbf 线程 =2 序列 =101存档日志文件名 =/data1/archivelog/1_182_618591128.dbf 线程 =1 序列 =182存档日志文件名 =/data1/archivelog/2_102_618591128.dbf 线程 =2 序列 =102介质恢复完成, 用时: 00:06:16完成 recover 14-5 -07释放的通道: c1释放的通道: c2

RMAN>

如果没有将归档日志文件拷贝到恢复节点上,则会出现下面的错误:

RMAN> run
2> {
3> allocate channel c1 device type disk format '/data1/backup/%U' connect sys/test@testrac1;
4> allocate channel c2 device type disk format '/data1/backup/%U' connect sys/test@testrac2;
5> recover database;
6> }

分配的通道: c1通道 c1: sid=313 实例=testrac1 devtype=DISK

分配的通道: c2通道 c2: sid=316 实例=testrac2 devtype=DISK

启动 recover 14-5 -07

正在开始介质的恢复

存档日志线程 1 序列 179 已作为文件 /data1/archivelog/1_179_618591128.dbf 存在于磁盘上存档日志线程 1 序列 180 已作为文件 /data1/archivelog/1_180_618591128.dbf 存在于磁盘上存档日志线程 1 序列 181 已作为文件 /data1/archivelog/1_181_618591128.dbf 存在于磁盘上存档日志线程 1 序列 182 已作为文件 /data1/archivelog/1_182_618591128.dbf 存在于磁盘上存档日志线程 1 序列 183 已作为文件 /data1/archivelog/1_183_618591128.dbf 存在于磁盘上存档日志文件名 =/data1/archivelog/1_179_618591128.dbf 线程 =1 序列 =179通道 c2: 正在启动到默认目标的存档日志恢复通道 c2: 正在恢复存档日志存档日志线程 =2 序列=99通道 c2: 正在恢复存档日志存档日志线程 =2 序列=100通道 c2: 正在读取备份段 /data1/backup/2pihmq8b_1_1通道 c2: 已恢复备份段 1段句柄 = /data1/backup/2pihmq8b_1_1 标记 = TAG20070514T112919通道 c2: 恢复完成, 用时: 00:00:25故障转移到上一个备份存档日志文件名 =/data1/archivelog/2_99_618591128.dbf 线程 =2 序列 =99释放的通道: c1释放的通道: c2
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover
命令 ( 05/14/2007 15:01:38 ) 失败

RMAN-11003:
在分析/执行 SQL 语句期间失败: alter database recover logfile '/data1/archivelog/2_99_618591128.dbf'
ORA-00308:
无法打开归档日志
'/data1/archivelog/2_99_618591128.dbf'
ORA-27037:
无法获得文件状态

SVR4 Error: 2: No such file or directory
Additional information: 3

yangtingkun 发表于:2007.05.14 15:27 ::分类: ( ORACLE ) ::阅读:(4403次) :: 评论 (12)
re: RMAN备份恢复——RAC环境数据库的备份(三) [回复]

老大最近狂研究rac呢,又是so8,有事so10,看了一下很有收获,跟着老大好好学学rac。从前只是基本会装而已

mustapha 评论于: 2007.05.16 19:52
re: RMAN备份恢复——RAC环境数据库的备份(三) [回复]

最近刚上了一个rac环境。
有些东西要自己先测测,省得出了问题麻烦

yangtingkun 评论于: 2007.05.16 22:47
re: RMAN备份恢复——RAC环境数据库的备份(三) [回复]

如果所有的database backupset都在一个节点上面,那么这要mount这一个节点的instance就可以执行database restore了。

overmars 评论于: 2007.05.17 10:48
re: RMAN备份恢复——RAC环境数据库的备份(三) [回复]

请教一个问题,在做恢复(RECOVER)的时候,在 通过host 'rcp 172.25.198.223:/data1/archivelog/* /data1/archivelog'命令把另一个节点的归档都复制到当前节点的情况下,是不是不用分配两个通道进行恢复。只要直接使用恢复命令就可以?就是直接用recover database

汪磊 评论于: 2008.01.06 12:44
re: RMAN备份恢复——RAC环境数据库的备份(三) [回复]

是的

yangtingkun 评论于: 2008.01.06 15:39
re: RMAN备份恢复——RAC环境数据库的备份(三) [回复]

版主这么快就回复了啊,多谢了!
以后要向你多多学习!

汪磊 评论于: 2008.01.06 17:29
re: RMAN备份恢复——RAC环境数据库的备份(三) [回复]

把你的备份的日志贴出来

yangtingkun 评论于: 2009.08.27 22:02
re: RMAN备份恢复——RAC环境数据库的备份(三) [回复]

我想问下:
我环境是oracle ra,使用ASM公共存储数据库文件和归档日志文件,两个节点orcl1,orcl2,
假如我恢复在第二节点上,没用目录,
rman target /
RMAN> run
2> {
3> allocate channel c1 device type disk format '/data1/backup/%U' connect sys/test@orcl2;
5> restore database;
6> }

这样没有写第一个节点:allocate channel c2 device type disk format '/data1/backup/%U' connect sys/test@orcl1;

这样可行吗?

“如果只启动了RAC的一个节点,则会导致RMAN出现下面的错误:
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: restore 命令 (在 05/11/2007 17:55:17 上) 失败
RMAN-06026: 有些目标没有找到 - 终止恢复
RMAN-06100: 没有通道来恢复数据文件14的备份或是副本
RMAN-06100: 没有通道来恢复数据文件13的备份或是副本

你这里的启动是什么意思呢,是一定要把两个节点都启动到mount状态吗?

Magic 评论于: 2009.09.21 13:38
re: RMAN备份恢复——RAC环境数据库的备份(三) [回复]

如果你是两个节点同时进行的备份,RESTORE的时候就应该启动两个节点。如果你用一个节点备份,RESTORE的时候只启动备份的节点就可以了

yangtingkun 评论于: 2009.09.21 13:59
re: RMAN备份恢复——RAC环境数据库的备份(三) [回复]

杨老师:
如果备份的时候是2个节点同时进行的备份,RESTORE的时候,把另一个节点的备份集COPY到了要进行RESTORE的节点,这个时候是不是不需要再启动2个节点进行RESTORE了。本来这个我可以自己测试的,但是我在虚拟机里搭建的RAC每次备份的时候 虚拟机就挂了。

寒 评论于: 2009.12.16 18:10
re: RMAN备份恢复——RAC环境数据库的备份(三) [回复]

对于磁盘方式保存的备份来说,这样做没有问题。
但是对于磁带方式保存的备份,还需要额外进行设置,在随后的文章中会具体的说明

yangtingkun 评论于: 2009.12.17 16:34
re: RMAN备份恢复——RAC环境数据库的备份(三) [回复]

谢谢 杨老师 后面的文章有介绍了
哎 我应该全部看完再提问的。
^_^

寒 评论于: 2009.12.20 15:04

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13024285/viewspace-671663/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13024285/viewspace-671663/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值