日期:2014-05-16  浏览次数:20444 次

RMAN备份恢复工具介绍
1.什么是RMAN
    RMAN(Recovery Manager,恢复管理器)是ORACLE数据库用来备份和还原数据库文件、归档日志和控制文件的工具。它可以用来执行完全或不完全的数据库恢复,其通过RMAN启动数据库上的Oracle服务器进程来进行备份或还原。
2.Nocatalog与Catalog
    RMAN有2种备份管理方式Nocatalog方式与Catalog方式:
    2.1 nocatalog方式
    就是用控制文件作为catalog,每一次备份都要往控制文件里面写备份信息,备份的信息都保存在控制文件中,而恢复的时候必须读取控制文件中的信息。因此,当使用rman nocatalog方式备份时,备份controlfile是非常重要的;如果没有包含备份信息的控制文件,将无法使用常规的方法来使用备份。
    2.2 catalog方式
    Catalog 则必须首先要创建目录备份数据库,建立恢复目录,用于记录RMAN使用过程中的控制信息,这样就不用担心控制文件的丢失,一般情况下恢复目录应该建立在另外一个单独的数据库中,脱离备份和恢复的数据库,单独维护。
    两种方式各有优势,Catalog方式适合管理多个目标库的备份信息,存储信息量大,而Nocatalog方式相对简单,我们目前一般推荐还是采用Nocatalog方式;最重要的原因是因为医院内部,使用的数据库并不太多,使用nocatalog可以简化管理。我们只需要在备份的同时备份控制文件。
    Oracle默认以Nocatalog方式登录RMAN:
[oracle@rac1~]$ rman target sys/his@orcl1
Recovery Manager: Release 10.2.0.1.0 - Production on Fri May 11 16:16:17 2012
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
connected to target database: ORCL (DBID=1310021810)
RMAN>

3.备份集和备份片
    有一些基本的rman的基本概念需要了解,否则无法正常的使用和理解rman脚本:
   3.1 备份集
    顾名思义就是一次备份的集合,它包含本次备份的所有备份片,以oracle专有的格式保存。一个备份集根据备份的类型不同,可能构成一个完全备份或增量备份。
   3.2 备份片
    一个备份集由若干个备份片组成。每个备份片是一个单独的输出文件。一个备份片的大小是有限制的;如果没有大小的限制,备份集就只由一个备份片构成。备份片的大小不能大于你的文件系统所支持的文件长度的最大值。
    RMAN的备份文件可以是由许多备份片组成的一个备份集,也就是说一次备份产生多个备份文件,不同于EXP只有一次备份只生成一个DMP备份文件。
    3.3 通道
    通道(Channel)可以看作是一个IO的进程,所以多通道的方式一般是提供RMAN的backup的并行度,对于多IO支持的设备,效果明显。我们可以用allocate channel来给他们分配通道,默认情况下RMAN只有一个通道,我们可以通过执行多个allocate channel命令来分配多个通道。
4.使用RMAN进行备份
    4.1 备份数据文件
    为了更好的区别备份片,我们在备份数据文件的时候,最好单独指定备份片的格式,通过format方式指定备份集的路径和备份格式,如下,我们把备份集放在/oradata/rman/backupset目录下,我们这里指定的备份集的格式为dbfull_%d_%u_%p_%s.bak:

RMAN>backup database tag 'dbfullbackup' format '/oradata/rman/backupset/dbfull_%d_%u_%p_%s.bak'  ---备份整个数据库
Starting backup at 11-MAY-12
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=1621 instance=orcl1 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00006 name=+DATE/orcl/datafile/zl9indexcis.dbf
input datafile fno=00005 name=+DATE/orcl/datafile/undotbs2.300.782241163
input datafile fno=00002 name=+DATE/orcl/datafile/undotbs1.301.782241003
input datafile fno=00007 name=+DATE/orcl/datafile/zl9cisrec.dbf
input datafile fno=00001 name=+DATE/orcl/datafile/system.260.782241001
input datafile fno=00003 name=+DATE/orcl/datafile/sysaux.267.782241003
input datafile fno=00004 name=+DATE/orcl/datafile/users.263.782241003
channel ORA_DISK_1: starting piece 1 at 11-MAY-12

    在没有分配通道的情况下,RMAN会自动分配一个通道,如上面红色部分就是在分配通道。上面备份集格式中的%d_%u_%p_%s是RMAN定义的一些备份保存格式,具体的解释如下:
 %c 备份片的拷贝数
 %d 数据库名称