ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RMAN备份之备份多个备份集到带库(一)

RMAN备份之备份多个备份集到带库(一)

原创 Linux操作系统 作者:yangtingkun 时间:2007-07-19 00:00:00 0 删除 编辑

使用RMAN备份到带库时,同时备份多个备份集,需要注意一些问题。


首先是Oracle的初始化参数BACKUP_TAPE_IO_SLAVES必须设置为TRUE,否则备份会报错:

RMAN> run
2> {
3> allocate channel c1 device type sbt;
4> backup copies 2 tablespace users;
5> }

使用目标数据库控制文件替代恢复目录
分配的通道: c1
通道 c1: sid=293 实例=testrac2 devtype=SBT_TAPE
通道c1: VERITAS NetBackup for Oracle - Release 6.0 (2006110304)

启动 backup 于 12-6月 -07
通道 c1: 启动全部数据文件备份集
通道 c1: 正在指定备份集中的数据文件
输入数据文件 fno=00005 name=+DISK/testrac/datafile/users.267.618591279
释放的通道: c1
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup 命令 (c1 通道上, 在 06/12/2007 18:20:51 上) 失败
ORA-19565: 对顺序设备进行双工时 BACKUP_TAPE_IO_SLAVES 禁用

这个参数设置只对数据文件和归档文件等数据库文件有效,对已经备份到磁盘的结果集不需要进行设置:

RMAN> run
2> {
3> allocate channel c1 device type sbt;
4> backup copies 2 backupset all;
5> }

分配的通道: c1
通道 c1: sid=293 实例=testrac2 devtype=SBT_TAPE
通道c1: VERITAS NetBackup for Oracle - Release 6.0 (2006110304)

启动 backup 于 12-6月 -07
输入备份集 count==483 stamp=625076895 creation_time=12-6月 -07
通道 c1: 正在启动段 1 于 12-6月 -07
通道 c1: 备份段 /data1/backup/f3ik3qkv_1_1
段 handle=f3ik3qkv_1_5 comment=API Version 2.0,MMS Version 5.0.0.0
通道 c1: 备份段 /data1/backup/f3ik3qkv_1_1
段 handle=f3ik3qkv_1_6 comment=API Version 2.0,MMS Version 5.0.0.0
通道 c1: 已完成段 1 于 12-6月 -07, 有 2 个副本
通道 c1: 备份集已完成, 经过时间:00:01:35
输入备份集 count==484 stamp=625076911 creation_time=12-6月 -07
通道 c1: 正在启动段 1 于 12-6月 -07
通道 c1: 备份段 /data1/backup/f4ik3qlf_1_1
段 handle=f4ik3qlf_1_5 comment=API Version 2.0,MMS Version 5.0.0.0
通道 c1: 备份段 /data1/backup/f4ik3qlf_1_1
段 handle=f4ik3qlf_1_6 comment=API Version 2.0,MMS Version 5.0.0.0
通道 c1: 已完成段 1 于 12-6月 -07, 有 2 个副本
通道 c1: 备份集已完成, 经过时间:00:01:05
完成 backup 于 12-6月 -07
释放的通道: c1

下面设置初始化参数,并重启数据库:

RMAN> exit


恢复管理器完成。
$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.3.0 - Production on 星期三 6月 13 10:11:40 2007

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.


连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> show parameter backup_tape_io_slaves

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
backup_tape_io_slaves boolean FALSE
SQL> alter system set backup_tape_io_slaves = true scope = spfile;

系统已更改。

SQL> exit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options 断开
$ srvctl stop db -d testrac
$ srvctl start db -d testrac

但是修改了这个初始化参数并不意味着解决了问题:

$ rman target /

恢复管理器: Release 10.2.0.3.0 - Production on 星期三 6月 13 10:15:43 2007

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

连接到目标数据库: TESTRAC (DBID=4291216984)

RMAN> run
2> {
3> allocate channel c1 device type sbt;
4> backup copies 2 tablespace users;
5> }

使用目标数据库控制文件替代恢复目录
分配的通道: c1
通道 c1: sid=291 实例=testrac2 devtype=SBT_TAPE
通道c1: VERITAS NetBackup for Oracle - Release 6.0 (2006110304)

启动 backup 于 13-6月 -07
通道 c1: 启动全部数据文件备份集
通道 c1: 正在指定备份集中的数据文件
输入数据文件 fno=00005 name=+DISK/testrac/datafile/users.267.618591279
通道 c1: 正在启动段 1 于 13-6月 -07
释放的通道: c1
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup 命令 (c1 通道上, 在 06/13/2007 10:16:30 上) 失败
ORA-19506: 无法创建顺序文件, 名称 = "f6ik5p7q_1_1", 参数 = ""
ORA-27028: skgfqcre: sbtbackup 返回错误
ORA-19511: 从介质管理器层接收到错误, 错误文本为:
No policy or schedule name is explicitly specified for copy number <1>.

备份多个备份集到带库,还要受到netbackup的策略制约。

利用root在图形化界面下启动jnbSA:

# jnbSA

然后在NetBackup Management的Policies中找到当前客户端的策略,双击打开,并定位到Schedules标签页,选择目前的策略,并点击修改,选择Multiple copies,并确定。

但是发现设置这个参数后,不指定COPIES,Oracle也会备份多个备份集,如果指定COPIES仍然会报错。

无奈查询METALINK,发现Oracle在这里还需要进行额外的设置,只有使用下面的备份方法才可以成功:

RMAN> run
2> {
3> set duplex=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;
9> }

正在执行命令: SET BACKUP COPIES

分配的通道: c1
通道 c1: sid=308 实例=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=00005 name=+DISK/testrac/datafile/users.267.618591279
通道 c1: 正在启动段 1 于 14-6月 -07
通道 c1: 已完成段 1 于 14-6月 -07, 有 2 个副本和标记 TAG20070614T110417
段 handle=ggik8gdh_1_1 comment=API Version 2.0,MMS Version 5.0.0.0
段 handle=ggik8gdh_1_2 comment=API Version 2.0,MMS Version 5.0.0.0
通道 c1: 备份集已完成, 经过时间:00:04:15
完成 backup 于 14-6月 -07
释放的通道: c1
释放的通道: c2

为了使用这种方法进行备份,必须建立两个SCHEDULE,每个CHANNEL指定一个SCHEDULE。而且需要注意的是,这种方式对BACKUP COPIES 2这种语句无效,只对SET BACKUP COPIES,这种方式有效,而且SET BACKUP COPIES必须在ALLOCATE CHANNEL命令之前发出,否则会出错。

RMAN> run
2> {
3> allocate channel c1 device type sbt;
4> allocate channel c2 device type sbt;
5> send 'NB_ORA_CLIENT=backup,CPF1_POLICY=testoracle,CPF1_SCHED=Default-Application-Backup';
6> send 'NB_ORA_CLIENT=backup,CPF2_POLICY=testoracle,CPF2_SCHED=test_multi_copy';
7> backup copies 2 tablespace users;
8> }

分配的通道: c1
通道 c1: sid=308 实例=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 于 13-6月 -07
通道 c1: 启动全部数据文件备份集
通道 c1: 正在指定备份集中的数据文件
输入数据文件 fno=00005 name=+DISK/testrac/datafile/users.267.618591279
通道 c1: 正在启动段 1 于 13-6月 -07
MAN-03009: backup 命令 (c1 通道上, 在 06/13/2007 17:19:10 上) 失败
ORA-19506: 无法创建顺序文件, 名称 = "g6ik6huc_1_2", 参数 = ""
ORA-27028: skgfqcre: sbtbackup 返回错误
ORA-19511: 从介质管理器层接收到错误, 错误文本为:
No policy or schedule name is explicitly specified for copy number <2>.
通道 c1 已禁用, 将在另一个通道上运行该通道上失败的作业
通道 c2: 启动全部数据文件备份集
通道 c2: 正在指定备份集中的数据文件
输入数据文件 fno=00005 name=+DISK/testrac/datafile/users.267.618591279
通道 c2: 正在启动段 1 于 13-6月 -07
释放的通道: c1
释放的通道: c2
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup 命令 (c2 通道上, 在 06/13/2007 17:20:15 上) 失败
ORA-19506: 无法创建顺序文件, 名称 = "g7ik6i0e_1_2", 参数 = ""
ORA-27028: skgfqcre: sbtbackup 返回错误
ORA-19511: 从介质管理器层接收到错误, 错误文本为:
No policy or schedule name is explicitly specified for copy number <2>.

同样的设置对于SET BACKUP COPIES 2有效,但是由于BACKUP COPIES 2 TABLESPACE USERS语句就会报错。

RMAN> run
2> {
3> allocate channel c1 device type sbt;
4> allocate channel c2 device type sbt;
5> send 'NB_ORA_CLIENT=backup,CPF1_POLICY=testoracle,CPF1_SCHED=Default-Application-Backup';
6> send 'NB_ORA_CLIENT=backup,CPF2_POLICY=testoracle,CPF2_SCHED=test_multi_copy';
7> set backup copies 2;
8> backup archivelog all;
9> }

分配的通道: c1
通道 c1: sid=308 实例=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

正在执行命令: SET BACKUP COPIES

启动 backup 于 14-6月 -07
当前日志已存档
通道 c1: 正在启动存档日志备份集
通道 c1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =330 记录 ID=853 时间戳=625244218
输入存档日志线程 =1 序列 =331 记录 ID=855 时间戳=625244420
通道 c1: 正在启动段 1 于 14-6月 -07
通道 c2: 正在启动存档日志备份集
通道 c2: 正在指定备份集中的存档日志
输入存档日志线程 =2 序列 =245 记录 ID=851 时间戳=625244214
输入存档日志线程 =2 序列 =246 记录 ID=856 时间戳=625244419
通道 c2: 正在启动段 1 于 14-6月 -07
MAN-03009: backup 命令 (c2 通道上, 在 06/14/2007 15:03:16 上) 失败
ORA-19506: 无法创建顺序文件, 名称 = "heik8u84_1_2", 参数 = ""
ORA-27028: skgfqcre: sbtbackup 返回错误
ORA-19511: 从介质管理器层接收到错误, 错误文本为:
No policy or schedule name is explicitly specified for copy number <2>.
通道 c2 已禁用, 将在另一个通道上运行该通道上失败的作业
释放的通道: c1
释放的通道: c2
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup 命令 (c1 通道上, 在 06/14/2007 15:03:41 上) 失败
ORA-19506: 无法创建顺序文件, 名称 = "hdik8u84_1_2", 参数 = ""
ORA-27028: skgfqcre: sbtbackup 返回错误
ORA-19511: 从介质管理器层接收到错误, 错误文本为:
No policy or schedule name is explicitly specified for copy number <2>.

SET BACKUP COPIES 2放到ALLOCATE CHANNEL命令之后,也会报错。

最后注意一下,前面提到的修改POLICY中的MULTIPLE COPIES是不需要修改的,这个设置对所有的备份都是生效的。也就是说,即使不指定SET BACKUP COPIES或者BACKUP COPIES N,备份也会自动备份多个备份集。这显然不是预期的结果。

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

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10366873