ORACLE RAC数据库的备份与恢复(3)

3、执行RAC数据库的备份

  基本上,RAC下创建备份任务,备份语句是不需要做什么修改的,只要前面的准备工作都做好了(主要是归档文件),那么备份是会很顺畅的。

  首先来举个例子,默认情况下直接执行备份,通过RMAN连接到任意结点执行,这里我们在节点2端执行备份操作:

[oracle@jssdbn 2  ~]$ rman target /

Recovery Manager: Release 10.2.0.4.0 - Production on T hu   Jan  2 11: 1 4:19 2010

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

connected to target database: JSSDB (DBID=953576437)

RMAN> run{

2> allocate channel c0 device type disk format ¨/data/%U¨;

3> backup database plus archivelog ;

4> }

allocated channel: c0

channel c0: sid=146 instance=jssdbn2 devtype=DISK

.............................

.............................

RMAN-03002: failure of backup plus archivelog command at 01/28/2010 11:17:07

RMAN-06059: expected archived log not found, lost of archived log compromises recoverability

ORA-19625: error identifying file /data/oradata/jssdbn1/archivelog/1_214_703671669.dbf

ORA-27037: unable to obtain file status

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3

  从提示信息可以清晰的看出,错误的原因是找不到指定的归档文件。实际上这里的缺少不是没有,而是说执行备份的节点上找不到这个归档,遇到这种问题,就可以按照1.2小节中提示的方法进行处理。

  问题处理完之后,再次执行相同的备份脚本:

RMAN> run{

2> allocate channel c0 device type disk format ¨/data/backup/%U¨;

3> backup database plus archivelog ;

4> }

using target database control file instead of recovery catalog

allocated channel: c0

channel c0: sid=147 instance=jssdbn2 devtype=DISK

Starting backup at 28-JAN-10

current log archived

archived log /data/oradata/jssdbn1/archivelog/1_214_703671669.dbf not found or out of sync with catalog

trying alternate file for archivelog thread 1, sequence 214

archived log /data/oradata/jssdbn1/archivelog/1_215_703671669.dbf not found or out of sync with catalog

trying alternate file for archivelog thread 1, sequence 215

archived log /data/oradata/jssdbn1/archivelog/1_216_703671669.dbf not found or out of sync with catalog

trying alternate file for archivelog thread 1, sequence 216

archived log /data/oradata/jssdbn1/archivelog/1_217_703671669.dbf not found or out of sync with catalog

trying alternate file for archivelog thread 1, sequence 217

archived log /data/oradata/jssdbn1/archivelog/1_218_703671669.dbf not found or out of sync with catalog

trying alternate file for archivelog thread 1, sequence 218

archived log /data/oradata/jssdbn1/archivelog/1_219_703671669.dbf not found or out of sync with catalog

trying alternate file for archivelog thread 1, sequence 219

archived log /data/oradata/jssdbn1/archivelog/1_220_703671669.dbf not found or out of sync with catalog

trying alternate file for archivelog thread 1, sequence 220

archived log /data/oradata/jssdbn1/archivelog/1_221_703671669.dbf not found or out of sync with catalog

trying alternate file for archivelog thread 1, sequence 221

archived log /data/oradata/jssdbn1/archivelog/1_222_703671669.dbf not found or out of sync with catalog

trying alternate file for archivelog thread 1, sequence 222

archived log /data/oradata/jssdbn1/archivelog/2_80_703671669.dbf not found or out of sync with catalog

trying alternate file for archivelog thread 2, sequence 80

channel c0: starting archive log backupset

channel c0: specifying archive log(s) in backup set

input archive log thread=1 sequence=214 recid=15 stamp=709470986

input archive log thread=1 sequence=215 recid=16 stamp=709470986

input archive log thread=1 sequence=216 recid=17 stamp=709470986

input archive log thread=1 sequence=217 recid=18 stamp=709470986

input archive log thread=1 sequence=218 recid=10 stamp=709386699

input archive log thread=1 sequence=219 recid=8 stamp=709377003

input archive log thread=1 sequence=220 recid=13 stamp=709470839

input archive log thread=1 sequence=221 recid=20 stamp=709471027

input archive log thread=1 sequence=222 recid=24 stamp=709471178

input archive log thread=2 sequence=80 recid=22 stamp=709471126

input archive log thread=2 sequence=81 recid=6 stamp=709351223

input archive log thread=2 sequence=82 recid=11 stamp=709423258

input archive log thread=2 sequence=83 recid=12 stamp=709470834

input archive log thread=2 sequence=84 recid=19 stamp=709471026

input archive log thread=2 sequence=85 recid=23 stamp=709471176

channel c0: starting piece 1 at 28-JAN-10

channel c0: finished piece 1 at 28-JAN-10

piece handle=/data/backup/01l4jaui_1_1 tag=TAG20100128T111946 comment=NONE

channel c0: backup set complete, elapsed time: 00:00:16

Finished backup at 28-JAN-10

Starting backup at 28-JAN-10

channel c0: starting full datafile backupset

channel c0: specifying datafile(s) in backupset

input datafile fno=00003 name=+ASMDISK1/jssdb/datafile/sysaux.266.703671697

input datafile fno=00001 name=+ASMDISK1/jssdb/datafile/system.260.703671683

input datafile fno=00002 name=+ASMDISK1/jssdb/datafile/undotbs1.259.703671695

input datafile fno=00004 name=+ASMDISK1/jssdb/datafile/undotbs2.258.703671705

input datafile fno=00006 name=+ASMDISK1/jssdb/datafile/jsstbs.269.703779631

input datafile fno=00005 name=+ASMDISK1/jssdb/datafile/users.257.703671709

channel c0: starting piece 1 at 28-JAN-10

channel c0: finished piece 1 at 28-JAN-10

piece handle=/data/backup/02l4jav5_1_1 tag=TAG20100128T112005 comment=NONE

channel c0: backup set complete, elapsed time: 00:00:25

channel c0: starting full datafile backupset

channel c0: specifying datafile(s) in backupset

including current control file in backupset

including current SPFILE in backupset

channel c0: starting piece 1 at 28-JAN-10

channel c0: finished piece 1 at 28-JAN-10

piece handle=/data/backup/03l4javu_1_1 tag=TAG20100128T112005 comment=NONE

channel c0: backup set complete, elapsed time: 00:00:03

Finished backup at 28-JAN-10

Starting backup at 28-JAN-10

current log archived

archived log /data/oradata/jssdbn1/archivelog/1_223_703671669.dbf not found or out of sync with catalog

trying alternate file for archivelog thread 1, sequence 223

channel c0: starting archive log backupset

channel c0: specifying archive log(s) in backup set

input archive log thread=1 sequence=223 recid=26 stamp=709471235

input archive log thread=2 sequence=86 recid=28 stamp=709471236

channel c0: starting piece 1 at 28-JAN-10

channel c0: finished piece 1 at 28-JAN-10

piece handle=/data/backup/04l4jb05_1_1 tag=TAG20100128T112037 comment=NONE

channel c0: backup set complete, elapsed time: 00:00:02

Finished backup at 28-JAN-10

released channel: c0

  一切顺利,备份集创建成功。

  不过,这里隐含一个问题,通常我们习惯于在备份完归档之后删除原归档文件,以释放相应的磁盘空间,不过在当前这个情况下,如果你尝试清除归档的话,如无意外肯定会报错,例如:

RMAN>  delete archivelog sequence 214 thread 1;

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=134 instance=jssdbn2 devtype=DISK

List of Archived Log Copies

Key     Thrd Seq     S Low Time  Name

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

15      1    214     A 24-JAN-10 /data/oradata/jssdbn2/archivelog/1_214_703671669.dbf

1       1    214     A 24-JAN-10 /data/oradata/jssdbn1/archivelog/1_214_703671669.dbf

Do you really want to delete the above objects (enter YES or NO)? yes

deleted archive log

archive log filename=/data/oradata/jssdbn2/archivelog/1_214_703671669.dbf recid=15 stamp=709470986

Deleted 1 objects

RMAN-06207: WARNING: 1 objects could not be deleted for DISK channel(s) due

RMAN-06208:          to mismatched status.  Use CROSSCHECK command to fix status

RMAN-06210: List of Mismatched objects

RMAN-06211: ==========================

RMAN-06212:   Object Type   Filename/Handle

RMAN-06213: --------------- ---------------------------------------------------

RMAN-06214: Archivelog      /data/oradata/jssdbn1/archivelog/1_214_703671669.dbf

  节点2端的归档成功删除,可是节点1端生成的归档删除报错,觉着奇怪吗?其实如果你稍稍开动一下脑筋,随便动用几十万亿个脑细胞就肯定能想明白这个事儿,没错,这里报错的原来就是节点2上操作不了节点1中的" /data/oradata/jssdbn1/archivelog/1_214_703671669.dbf " 这个文件,你想说到节点1端去删除?那也会有问题,因为节点1又操作不了节点2上的" /data/oradata/jssdbn2/archivelog/1_214_703671669.dbf " 这个文件,咋整?我有办法,用家乐浓汤宝吧,三碗水,一个鸡汤口味。。。。Oo对不起对不起,最近广告看多了。我真正想说的是,用RMAN中的通道吧。

插播内容:配置多通道连接不同实例,认真看,不是广告。

  可以通过configure预配置几个通道(一般有几个实例就配几个通道),用来连接相应的实例,命令行如下:

RMAN>  configure channel 1 device type disk connect ¨sys/123456@jssdbn1¨;

new RMAN configuration parameters:

CONFIGURE CHANNEL 1 DEVICE TYPE DISK CONNECT ¨*¨;

new RMAN configuration parameters are successfully stored

released channel: ORA_DISK_1

RMAN>  configure channel 2 device type disk connect ¨sys/123456@jssdbn2¨;

new RMAN configuration parameters:

CONFIGURE CHANNEL 2 DEVICE TYPE DISK CONNECT ¨*¨;

new RMAN configuration parameters are successfully stored

  Configure channel 大家应该看着眼熟,有不认识的建议重温" 一步一步学RMAN" ,或者浏览" 涂抹ORACLE--三思笔记第8章" ,关于connect子句简单解释两句,后跟目标实例的用户名密码及网络服务名,这个网络服务名要确保执行备份的节点中确实进行了配置哟,不然该通道连接时肯定就会报错了。

  配置完成之后,查看当前通道配置情况,应显示如下:

RMAN>  show channel;

RMAN configuration parameters are:

CONFIGURE CHANNEL 1 DEVICE TYPE DISK CONNECT ¨*¨;

CONFIGURE CHANNEL 2 DEVICE TYPE DISK CONNECT ¨*¨;

  而且这种方式还有一个好处,就是RMAN能够智能的对备份中出现"问题"的任务进行再分配,比如说通道1和通道2同时执行备份,其中通道1备份数据文件134,通道2备份数据文件2和5,假如通道2执行过程中由于某些原因崩溃,RMAN可以自动将任务放回到通道1上执行。

  接下来,还有很重要的一步,启动并行,并且至少要启动"节点数量"个并行度。这样的目的是为了RMAN在分配任务时,自动至少启动多个通道并连接到相应的实例上,操作如下,例如我们这里的双节点RAC,就配置2个并行度:

RMAN>  configure device type disk parallelism 2;

new RMAN configuration parameters:

CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;

new RMAN configuration parameters are successfully stored

released channel: ORA_DISK_1

  这样,当执行RMAN任务时,它就会根据任务所需,自动分配通道连接到适当实例,执行适当的操作。例如,再将从节点2端删除214序号的归档文件,操作如下:

RMAN>  delete archivelog sequence 214;

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=130 instance=jssdbn1 devtype=DISK

allocated channel: ORA_DISK_2

channel ORA_DISK_2: sid=152 instance=jssdbn2 devtype=DISK

List of Archived Log Copies

Key     Thrd Seq     S Low Time  Name

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

1       1    214     A 24-JAN-10 /data/oradata/jssdbn1/archivelog/1_214_703671669.dbf

Do you really want to delete the above objects (enter YES or NO)? yes

deleted archive log

archive log filename=/data/oradata/jssdbn1/archivelog/1_214_703671669.dbf recid=1 stamp=709219728

Deleted 1 objects

  成功删除,这个成功也体现了分配通道后RMAN的智能,它会根据配置给不同的通道分配不同的任务,这样也就不用担心节点路径不同导致删除任务的失败了。

  路障基本扫除,下面综合来测试一下,执行脚本如下:

RMAN> run{

allocate channel c0 device type disk format ¨/data/backup/%U¨;

backup database plus archivelog;

release channel c0;

}

allocated channel: c0

channel c0: sid=144 instance=jssdbn2 devtype=DISK

Starting backup at 03-FEB-10

current log archived

archived log /data/oradata/jssdbn1/archivelog/1_224_703671669.dbf not found or out of sync with catalog

trying alternate file for archivelog thread 1, sequence 224

archived log /data/oradata/jssdbn1/archivelog/1_225_703671669.dbf not found or out of sync with catalog

.....................

........................

trying alternate file for archivelog thread 1, sequence 237

archived log /data/oradata/jssdbn1/archivelog/2_88_703671669.dbf not found or out of sync with catalog

trying alternate file for archivelog thread 2, sequence 88

channel c0: starting archive log backupset

channel c0: specifying archive log(s) in backup set

input archive log thread=1 sequence=224 recid=64 stamp=709997627

input archive log thread=1 sequence=225 recid=65 stamp=709997630

............................

...............................

input archive log thread=2 sequence=97 recid=66 stamp=709997682

channel c0: starting piece 1 at 03-FEB-10

channel c0: finished piece 1 at 03-FEB-10

piece handle=/data/backup/05l53d3s_1_1 tag=TAG20100203T133451 comment=NONE

channel c0: backup set complete, elapsed time: 00:00:36

Finished backup at 03-FEB-10

Starting backup at 03-FEB-10

channel c0: starting full datafile backupset

channel c0: specifying datafile(s) in backupset

input datafile fno=00003 name=+ASMDISK1/jssdb/datafile/sysaux.266.703671697

input datafile fno=00001 name=+ASMDISK1/jssdb/datafile/system.260.703671683

input datafile fno=00002 name=+ASMDISK1/jssdb/datafile/undotbs1.259.703671695

input datafile fno=00004 name=+ASMDISK1/jssdb/datafile/undotbs2.258.703671705

input datafile fno=00006 name=+ASMDISK1/jssdb/datafile/jsstbs.269.703779631

input datafile fno=00005 name=+ASMDISK1/jssdb/datafile/users.257.703671709

channel c0: starting piece 1 at 03-FEB-10

channel c0: finished piece 1 at 03-FEB-10

piece handle=/data/backup/06l53d53_1_1 tag=TAG20100203T133531 comment=NONE

channel c0: backup set complete, elapsed time: 00:00:25

channel c0: starting full datafile backupset

channel c0: specifying datafile(s) in backupset

including current control file in backupset

including current SPFILE in backupset

channel c0: starting piece 1 at 03-FEB-10

channel c0: finished piece 1 at 03-FEB-10

piece handle=/data/backup/07l53d5s_1_1 tag=TAG20100203T133531 comment=NONE

channel c0: backup set complete, elapsed time: 00:00:03

Finished backup at 03-FEB-10

Starting backup at 03-FEB-10

current log archived

archived log /data/oradata/jssdbn1/archivelog/1_238_703671669.dbf not found or out of sync with catalog

trying alternate file for archivelog thread 1, sequence 238

channel c0: starting archive log backupset

channel c0: specifying archive log(s) in backup set

input archive log thread=1 sequence=238 recid=70 stamp=709997762

input archive log thread=2 sequence=98 recid=69 stamp=709997760

channel c0: starting piece 1 at 03-FEB-10

channel c0: finished piece 1 at 03-FEB-10

piece handle=/data/backup/08l53d64_1_1 tag=TAG20100203T133604 comment=NONE

channel c0: backup set complete, elapsed time: 00:00:02

Finished backup at 03-FEB-10

released channel: c0

  然后执行命令删除所有已备份过的归档文件,因为有默认通道的存在,因此这里可以不用再分配通道了,直接执行如下:

RMAN>  delete noprompt archivelog all backed up 1 times to device type disk;

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=127 instance=jssdbn1 devtype=DISK

allocated channel: ORA_DISK_2

channel ORA_DISK_2: sid=128 instance=jssdbn2 devtype=DISK

List of Archived Log Copies

Key     Thrd Seq     S Low Time  Name

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

64      1    224     A 28-JAN-10 /data/oradata/jssdbn2/archivelog/1_224_703671669.dbf

.......................................

.........................................

66      2    97      A 03-FEB-10 /data/oradata/jssdbn2/archivelog/2_97_703671669.dbf

69      2    98      A 03-FEB-10 /data/oradata/jssdbn2/archivelog/2_98_703671669.dbf

deleted archive log

archive log filename=/data/oradata/jssdbn1/archivelog/1_224_703671669.dbf recid=30 stamp=709542410

deleted archive log

archive log filename=/data/oradata/jssdbn1/archivelog/1_225_703671669.dbf recid=32 stamp=709542491

.......................................

.........................................

deleted archive log

archive log filename=/data/oradata/jssdbn2/archivelog/2_97_703671669.dbf recid=66 stamp=709997682

deleted archive log

archive log filename=/data/oradata/jssdbn2/archivelog/2_98_703671669.dbf recid=69 stamp=709997760

Deleted 27 objects

  竣工!其它就不说了,上述执行的脚本为RMAN备份的最核心脚本,实际使用时可在此基本上进行相应的补充,比如增加备份类型、通道的设置、验证备份集、清除过期备份、日志输出等等操作。这部分相关知识已有专门论述,在此不再重复,感兴趣的朋友可以参考三思的著作“涂抹ORACLE--三思笔记” 一书第七章和第八章。

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

转载于:http://blog.itpub.net/7607759/viewspace-631030/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值