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

来源:互联网 发布:西安牛小网络 编辑:程序博客网 时间:2024/04/26 07:33
使用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,备份也会自动备份多个备份集。这显然不是预期的结果。