关于RMAN 中 backup backupset (备份集的备份) 的讨论 总结


------------------------------------------------------------------------------
问题:
------------------------------------------------------------------------------

请教RMAN中备份集的备份如何恢复?

在RMAN中可以用以下命令对备份集进行备份:
    备份所有备份集:
       RMAN> backup backupset all;
    备份指定备份集:
       RMAN> backup backupset bs_num;

请问,如何对其做恢复操作?我上网查了好久都没找到相应命令,特请教各位大侠!

我一同事看到这几个命令,问起我,我也觉得有些疑惑,所以发帖相问。谢谢各位!

------------------------------------------------------------------------------
查资料
------------------------------------------------------------------------------


查了一下 Oracle9i Database: Advanced Backup and Recovery Using RMAN

  备份集备份的目的: 主要用于改变备份集的位置,或者创建多个镜像备份,比如将备份集从硬盘备份到磁带。

? This feature allows RMAN to change the location
of a backup set.
? The source location for this command must be
disk, however, the destination can be DISK or SBT.


BACKUP... BACKUPSET
RMAN> BACKUP backupSET CREATED BEFORE 'sysdate – 1'
2> DELETE INPUT;

Backing Up Backup Sets
    You can back up backup sets from disk to tape or from disk to disk. If RMAN discovers a
corrupt block or missing backup piece during the backup, then RMAN automatically performs
failover to an existing intact copy. The BACKUP BACKUPSET command uses the default disk
channel to copy backup sets from disk to disk. To back up from disk to tape, you must either
manually allocate a channel of DEVICE TYPE SBT or configure an automatic sbt channel.
    The BACKUP BACKUPSET command is a useful way to spread backups among multiple media.
For example, you can execute the following BACKUP command weekly as part of the production
backup schedule:
    RMAN> BACKUP DEVICE TYPE SBT BACKUPSET ALL;
    Now your backups exist on both disk and tape. You can also duplex backups of backup sets
(except for control file autobackups), as in this example:
    RMAN> BACKUP COPIES 2 DEVICE TYPE sbt BACKUPSET ALL;
    Note: If backup optimization is enabled when you issue the command to back up a backup set
and the identical backup set has already been backed up to the same device type, then RMAN
skips the backup of that backup set.

 

------------------------------------------------------------------------------
实验
------------------------------------------------------------------------------

做了个实验,测试结果如下

 

1. 首先建一个表test,插入一条数据:

SQL> select * from test;

      COL1 COL2
---------- ----------
         8 888

SQL>

2. 先做了一个全库备份,结果:
RMAN> backup database;

RMAN> list backupset;

备份集列表
===================

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
138     Full    571M       DISK        00:01:48     27-6月 -08
BP 关键字: 139   状态: AVAILABLE   标记:TAG20080627T120319
段名:/u01/oracle/product/9i/dbs/02jjvo8o_1_1
  包含的 SPFILE: 修改时间: 25-6月 -08
  备份集 138 中的数据文件列表
  文件 LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
  1       Full 408519     27-6月 -08 /u02/oracle/oradata/crm/system01.dbf
  3       Full 408519     27-6月 -08 /u01/oracle/oradata/crm/cwmlite01.dbf
  4       Full 408519     27-6月 -08 /u01/oracle/oradata/crm/drsys01.dbf
  5       Full 408519     27-6月 -08 /u01/oracle/oradata/crm/example01.dbf
  6       Full 408519     27-6月 -08 /u04/oracle/oradata/crm/indx01.dbf
  7       Full 408519     27-6月 -08 /u01/oracle/oradata/crm/odm01.dbf
  8       Full 408519     27-6月 -08 /u01/oracle/oradata/crm/tools01.dbf
  9       Full 408519     27-6月 -08 /u05/oracle/oradata/crm/users01.dbf
  10      Full 408519     27-6月 -08 /u01/oracle/oradata/crm/xdb01.dbf
  11      Full 408519     27-6月 -08 /u03/oracle/oradata/crm/UNDOTBS02.dbf

 

3. 执行对备份集进行备份的命令

RMAN>  backup backupset 138;

启动 backup 于 27-6月 -08
使用通道 ORA_DISK_1
输入备份集 count==2 stamp=658497816 creation_time=27-6月 -08
通道 ORA_DISK_1: 正在启动段 1 于 27-6月 -08
段 handle=/u01/oracle/product/9i/dbs/02jjvo8o_1_2 comment=NONE
通道 ORA_DISK_1: 已完成段 1 于 27-6月 -08
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:08
完成 backup 于 27-6月 -08

 

4. 查看结果,发现只是增加了一个备份集的镜像!

RMAN> list backupset;


备份集列表
===================

BS 关键字  类型 LV 大小
------- ---- -- ----------
138     Full    571M
  包含的 SPFILE: 修改时间: 25-6月 -08
  备份集 138 中的数据文件列表
  文件 LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
  1       Full 408519     27-6月 -08 /u02/oracle/oradata/crm/system01.dbf
  3       Full 408519     27-6月 -08 /u01/oracle/oradata/crm/cwmlite01.dbf
  4       Full 408519     27-6月 -08 /u01/oracle/oradata/crm/drsys01.dbf
  5       Full 408519     27-6月 -08 /u01/oracle/oradata/crm/example01.dbf
  6       Full 408519     27-6月 -08 /u04/oracle/oradata/crm/indx01.dbf
  7       Full 408519     27-6月 -08 /u01/oracle/oradata/crm/odm01.dbf
  8       Full 408519     27-6月 -08 /u01/oracle/oradata/crm/tools01.dbf
  9       Full 408519     27-6月 -08 /u05/oracle/oradata/crm/users01.dbf
  10      Full 408519     27-6月 -08 /u01/oracle/oradata/crm/xdb01.dbf
  11      Full 408519     27-6月 -08 /u03/oracle/oradata/crm/UNDOTBS02.dbf

  备份集 副本号 1 属于备份集 138
  设备类型经过时间 完成时间   标记
  ----------- ------------ ---------- ---
  DISK        00:01:48     27-6月 -08 TAG20080627T120319

    备份集 138 副本号 1的备份段列表
    BP 关键字  Pc# 状态      段名称
    ------- --- ----------- ----------
    139     1   AVAILABLE   /u01/oracle/product/9i/dbs/02jjvo8o_1_1

  备份集 副本号 2 属于备份集 138
  设备类型经过时间 完成时间   标记
  ----------- ------------ ---------- ---
  DISK        00:01:48     27-6月 -08 TAG20080627T120319

    备份集 138 副本号 2的备份段列表
    BP 关键字  Pc# 状态      段名称
    ------- --- ----------- ----------
    180     1   AVAILABLE   /u01/oracle/product/9i/dbs/02jjvo8o_1_2


5. 查看备份集文件大小,发现他们是一样的

[oracle@earth dbs]$ l
total 1172984
-rw-r-----    1 oracle   dba      598917120 Jun 27 12:05 02jjvo8o_1_1
-rw-r-----    1 oracle   dba      598917120 Jun 27 16:00 02jjvo8o_1_2


6. 嘿嘿,原想将第一个置为UNAVAILABLE, 然后用第二个来恢复,发现两个都变成了UNAVAILABLE

RMAN> change backupset 138 unavailable;
RMAN> list backupset;

备份集列表
===================

BS 关键字  类型 LV 大小
------- ---- -- ----------
138     Full    571M
  包含的 SPFILE: 修改时间: 25-6月 -08
  备份集 138 中的数据文件列表
  文件 LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
  1       Full 408519     27-6月 -08 /u02/oracle/oradata/crm/system01.dbf
  3       Full 408519     27-6月 -08 /u01/oracle/oradata/crm/cwmlite01.dbf
  4       Full 408519     27-6月 -08 /u01/oracle/oradata/crm/drsys01.dbf
  5       Full 408519     27-6月 -08 /u01/oracle/oradata/crm/example01.dbf
  6       Full 408519     27-6月 -08 /u04/oracle/oradata/crm/indx01.dbf
  7       Full 408519     27-6月 -08 /u01/oracle/oradata/crm/odm01.dbf
  8       Full 408519     27-6月 -08 /u01/oracle/oradata/crm/tools01.dbf
  9       Full 408519     27-6月 -08 /u05/oracle/oradata/crm/users01.dbf
  10      Full 408519     27-6月 -08 /u01/oracle/oradata/crm/xdb01.dbf
  11      Full 408519     27-6月 -08 /u03/oracle/oradata/crm/UNDOTBS02.dbf

  备份集 副本号 1 属于备份集 138
  设备类型经过时间 完成时间   标记
  ----------- ------------ ---------- ---
  DISK        00:01:48     27-6月 -08 TAG20080627T120319

    备份集 138 副本号 1的备份段列表
    BP 关键字  Pc# 状态      段名称
    ------- --- ----------- ----------
    139     1   UNAVAILABLE /u01/oracle/product/9i/dbs/02jjvo8o_1_1

  备份集 副本号 2 属于备份集 138
  设备类型经过时间 完成时间   标记
  ----------- ------------ ---------- ---
  DISK        00:01:48     27-6月 -08 TAG20080627T120319

    备份集 138 副本号 2的备份段列表
    BP 关键字  Pc# 状态      段名称
    ------- --- ----------- ----------
    180     1   UNAVAILABLE /u01/oracle/product/9i/dbs/02jjvo8o_1_2


7. 重置为AVAILABLE, 然后删除第一个备份集的文件:(模拟备份集丢失)
RMAN> change backupset 138 available;

$ mv 02jjvo8o_1_1 02jjvo8o_1_1.bak

8. 尝试恢复,失败
RMAN> restore database;

....

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 06/27/2008 16:23:42
ORA-19505: failed to identify file "/u01/oracle/product/9i/dbs/02jjvo8o_1_1"
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3


9. 执行交叉校验
RMAN> CROSSCHECK BACKUP;

使用通道 ORA_DISK_1
交叉校验备份段: 找到为 'EXPIRED'
备份段 handle=/u01/oracle/product/9i/dbs/02jjvo8o_1_1 recid=1 stamp=658497818
交叉校验备份段: 找到为 'AVAILABLE'
备份段 handle=/u01/oracle/product/9i/dbs/02jjvo8o_1_2 recid=2 stamp=658511949
已交叉检验的 2 对象


10. 再尝试恢复,成功


RMAN> restore database;

启动 restore 于 27-6月 -08

使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到/u02/oracle/oradata/crm/system01.dbf
正将数据文件00003恢复到/u01/oracle/oradata/crm/cwmlite01.dbf
正将数据文件00004恢复到/u01/oracle/oradata/crm/drsys01.dbf
正将数据文件00005恢复到/u01/oracle/oradata/crm/example01.dbf
正将数据文件00006恢复到/u04/oracle/oradata/crm/indx01.dbf
正将数据文件00007恢复到/u01/oracle/oradata/crm/odm01.dbf
正将数据文件00008恢复到/u01/oracle/oradata/crm/tools01.dbf
正将数据文件00009恢复到/u05/oracle/oradata/crm/users01.dbf
正将数据文件00010恢复到/u01/oracle/oradata/crm/xdb01.dbf
正将数据文件00011恢复到/u03/oracle/oradata/crm/UNDOTBS02.dbf
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=/u01/oracle/product/9i/dbs/02jjvo8o_1_2 tag=TAG20080627T120319 params=NULL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 27-6月 -08

RMAN> recover database;

启动 recover 于 27-6月 -08
使用通道 ORA_DISK_1

正在开始介质的恢复
完成介质的恢复

完成 recover 于 27-6月 -08

RMAN> sql 'alter database open';

sql 语句: alter database open


查看表test,恢复成功!
SQL> select * from test;

      COL1 COL2
---------- ----------
         8 888

SQL>

------------------------------------------------------------------------------
总结:
------------------------------------------------------------------------------

   原以为对备份集进行备份后,需要先对其进行恢复,才能进行对数据库的其他恢复操作,原来是不需要的!

   原来我在做备份集的备份时,总是手工/自动的将其备份到磁带或其他的机器,实现异地的备份,以免本机出现故障后进行恢复。

   看来,这个命令还是很有用的! 特别是将备份集备份到磁带时。

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

转载于:http://blog.itpub.net/283894/viewspace-366146/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值