使用RMAN备份到带库时,同时备份多个备份集,需要注意一些问题。
RMAN备份之备份多个备份集到带库(一):http://yangtingkun.itpub.net/post/468/309044
上一篇文章简单介绍了如何才能在磁带上备份多个备份集,这里要说明一下采用这种方法可能遇到的问题。
首先如果要备份多个备份集的话,要求磁带库必须要用多个驱动器。这时由于多个备份集需要同时进行写操作。
这个测试环境中的带库是PX502,有两个驱动器,也就是说,最多支持COPIES = 2。不过这里还隐藏着一个比较严重的问题。
上面的备份都是针对一个对象进行的。虽然分配了两个CHANNEL,但是只有一个CHANNEL执行备份操作(另一个CHANNEL空闲,但是由于设置了BACKUP COPIES 2,因此另一个CHANNEL用来进行第二个备份集的生成)。
但是如果备份的目标超过一个,这时Oracle的RMAN会自动将其分配到两个CHANNEL上去,而且由于设置了BACKUP COPIES 2,每个备份集都有备份在两个CHANNEL上,因此,实际上后台存在4个任务,且每个备份和它的备份COPY必须同时进行,而系统只有两个驱动器,这就造成了两个驱动器都在等待它的COPIES准备就绪,从而整个备份陷入死锁状态。
如果已经造成了死锁,可以通过下面的方法来完成备份。通过图形化界面,找到正在备份的JOB,杀掉其中一个,使得一个CHANNEL的备份出现失败,从而使另一个CHANNEL的备份可以获取资源。
由于设置了两个CHANNEL,一个CHANNEL的备份失败后,会在另一个CHANNEL上进行重试,这样,就改变了4个备份任务的实现顺序,使得两个备份都可以和它的COPIES同时进行:
RMAN> run
2> {
3> set backup copies 2;
4> allocate channel c1 device type sbt;
5> allocate channel c2 device type sbt;
6> send 'NB_ORA_CLIENT=backup,CPF1_POLICY=testoracle,CPF1_SCHED=Default-Application-Backup';
7> send 'NB_ORA_CLIENT=backup,CPF2_POLICY=testoracle,CPF2_SCHED=test_multi_copy';
8> backup tablespace users, ndindex;
9> }
正在执行命令: SET BACKUP COPIES
分配的通道: c1
通道 c1: sid=287 实例=testrac2 devtype=SBT_TAPE
通道c1: VERITAS NetBackup for Oracle - Release 6.0 (2006110304)
分配的通道: c2
通道 c2: sid=285 实例=testrac2 devtype=SBT_TAPE
通道c2: VERITAS NetBackup for Oracle - Release 6.0 (2006110304)
向通道发命令: c1
向通道发命令: c2
向通道发命令: c1
向通道发命令: c2
启动 backup 于 14-6月 -07
通道 c1: 启动全部数据文件备份集
通道 c1: 正在指定备份集中的数据文件
输入数据文件 fno=00010 name= DISK/testrac/datafile/ndindex01.dbf
通道 c1: 正在启动段 1 于 14-6月 -07
IXDBA.NET社区论坛
通道 c2: 启动全部数据文件备份集
通道 c2: 正在指定备份集中的数据文件
输入数据文件 fno=00005 name= DISK/testrac/datafile/users.267.618591279
通道 c2: 正在启动段 1 于 14-6月 -07
通道 c1: 已完成段 1 于 14-6月 -07, 有 2 个副本和标记 TAG20070614T163039
段 handle=i0ik93hf_1_1 comment=API Version 2.0,MMS Version 5.0.0.0
段 handle=i0ik93hf_1_2 comment=API Version 2.0,MMS Version 5.0.0.0
通道 c1: 备份集已完成, 经过时间:00:14:56
MAN-03009: backup 命令 (c2 通道上, 在 06/14/2007 16:46:00 上) 失败
ORA-27192: skgfcls: sbtclose2 返回错误 - 无法关闭文件
ORA-19511: 从介质管理器层接收到错误, 错误文本为:
Failed to process backup file <i1ik93hf_1_1>
ORA-19502: 文件 "i1ik93hf_1_1", 块编号 1 写错误 (块大小 = 512)
ORA-27030: skgfwrt: sbtwrite2 返回错误
ORA-19511: 从介质管理器层接收到错误, 错误文本为:
VxBSASendData: Failed with error:
Server Status: Communication with the server has not been iniatated or the server status has not been retrieved from the server.