RMAN备份详解

认识RMAN

RMAN(Recovery Manager)是ORACLE恢复管理器的简称,是集数据库备份(backup)、还原(restore)和恢复(recover)于一体的工具。接下来了解一下RMAN中的几个重要概念。

(1)RMAN档案资料库

RMAN档案资料库用于存储数据库备份、还原以及恢复操作时所需要的信息。这些信息包括从目标数据库控制文件获取的数据库物理结构信息,以及RMAN备份与恢复过程中生成的信息。RMAN档案资料库可以保存在目标数据库的控制文件中,也可以保存在一个独立的恢复目录数据库的恢复目录中。

(1.1) 将RMAN档案资料库保存在控制文件中

控制文件包括不可重用的记录和可重用的记录,不可重用的记录主要是数据文件、联机重做日志文件等不经常变化的、关键性的信息;可重用的是记录数据库运行过程中不断生成的信息,包括重做日志文件的历史信息、已归档的重做日志文件的历史信息、备份信息等。

(1.2) 将RMAN档案资料库保存在恢复目录中

如果要使用恢复目录保存RMAN档案资料库,需要先创建一个独立于目标数据库的恢复目录数据库,专门用来存储和管理RMAN档案资料库信息。一个恢复目录可以被多个目标数据库使用,只要将目标数据库注册到恢复目录中即可。
RMAN恢复目录主要包括以下信息:
--目标数据库的数据文件与归档重做日志文件的备份信息;
--目标数据据库数据文件的镜像复制信息;
--目标数据库中表空间与数据文件的关系;
--存储用户建立的RMAN脚本,可以重复使用;
--永久性的RMAN预定义配置参数信息。

(2)RMAN通道

在RMAN中进行任何类型的备份、修复或恢复操作时,都需要为这些操作分配通道,一个RMAN通道表示到一个存储设备的数据流,对应目标数据库的一个进程,由服务器进程来完成数据库的备份与恢复工作。RMAN支持的通道设备类型包括磁盘(Disk)与SBT(System Backup To Tape)。SBT是指第三方介质管理器管理与控制的存储备份,主要是磁带库和磁带驱动器。

(3)RMAN预定义配置参数

RMAN环境中有一系列的预定义配置参数,又称为RMAN环境变量,自动作用于所有的RMAN会话。可以使用show all命令查看预定义参数的配置
RMAN> show all;

CONFIGURE RETENTION POLICY TO REDUNDANCY 2;   #设置备份保留策略

CONFIGURE BACKUP OPTIMIZATION OFF; # default  #启用或禁用优化功能

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default   #设置默认的备份类型

CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default   #设置控制文件自动备份

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default  #控制文件自动备份的格式

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default        #设置备份并行度

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default                #设置数据文件备份集的副本数量

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default          #设置归档重做日志文件备份集的数量

CONFIGURE MAXSETSIZE TO UNLIMITED; # default      #设置备份集的最大尺寸

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default    #设置启用加密功能

CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default            #如果启用加密功能,设置采用的加密算法

CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default          #设置备份的压缩算法

CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default      #设置归档重做日志文件备份后的处理策略

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/opt /oracle/products/11.2.0/dbhome_1/dbs/snapcf_orcl.f'; # default  #设置控制文件快照
可预先对这些参数进行配置,设置后的结果作用于所有RMAN会话,也可以在数据库备份与恢复过程中,对特定的参数进行配置。
接下来将对RMAN中的常用操作进行学习。

常用操作学习

*(1)连接目标数据库*
在RMAN中可以建立与目标数据库或恢复目录数据库的连接。与目标数据库连接时,用户须具有sysdba系统权限,以保证可以进行数据库的备份、修复与恢复工作。
可以在操作系统命令提示符下输入以下命令,直连目标数据库
RMAN TARGET \[/  | [user/password@net_service_name|mailto:user/password@net_service_name]\] \[NOCATALOG\]
或者先启动命令,再通过以下命令连接
CONNECT TARGET / CATALOG [user/password@net_service_name|mailto:user/password@net_service_name] \[NOCATALOG\]
参数说明:
--TARGET:目标数据库
--CATALOG:连接恢复目录数据库
--net_service_name:如果是远程数据库,须指明服务名
--NOCATALOG:表示不使用恢复目录保存档案资料库信息,档案资料库信息保存在目标数据库的控制文件中
*例{*}:直接使用rman连到目标数据库
C:\Users\> rman target [sys/oracle@orcl|mailto:sys/sys@orcl]
恢复管理器: Release 11.2.0.4.0 - Production on Copyright (c) 1982, 2009, [Oracle|http://www.linuxidc.com/topicnews.aspx?tid=12] and/or its affiliates.  All rights reserved.
连接到目标数据库: ORCL (DBID=1464900464)
  
*(2)启动与关闭数据库*
在RMAN中,可以直接启动和关闭数据库,其操作与SQL*Plus中相同。
C:\> RMAN TARGET /
RMAN > SHUTDOWN IMMEDIATE
RMAN > STARTUP MOUNT
RMAN > ALTER DATABASE OPEN;
 
*(3)在RMAN中执行SQL语句*
如果要在使用RMAN时执行SQL或PL/SQL语句,可以不退出RMAN工具,直接在RMAN中执行。首先在RMAN提示符后输入SQL命令,然后再将要执行的SQL语句用单引号或双引号引起来,最后输入分号即可执行该SQL语句。
*在RMAN中执行SQL语句需要注意:*
--STARTUP、SHUTDOWN等命令可直接执行,不需先输入SQL命令,因为这些命令已经被制成RMAN的命令了;
--RMAN中不能执行SELECT语句;
--如果SQL、PL/SQL语句包含单引号,需要在每个单引号之前再加一个单引号;
*例{*}:.将当前重做日志归档
RMAN> SQL 'alter system archive log current';
 
*(4)show命令*
可以使用show all在当前会话中所有RMAN预定义的配置参数的设置情况。
RMAN > show all;
也可以在show 后面加上参数名称来查看指定参数的配置情况。
RMAN > show default device type;
 
*(5) CONFIGURE命令*
1.对于RMAN中预定义的参数,可以使用CONFIGURE命令进行重新设置:
RMAN > CONFIGURE DEFAULT DEVICE TYPE TO sbt;
修改后的参数,查看其值时,后面的注释"#default"会消失 。
2.如果要将某个参数恢复到默认值,只需在CONFIGURE命令后指定CLEAR关键字即可:
RMAN > CONFIGURE DEFAULT DEVICE TYPE CLEAR;
 
*(6) LIST命令*
LIST命令用来查看RMAN生成的备份信息,包含备份集及其包含的数据文件列表信息、镜像复制的备份信息等。
1.列出数据库中所有文件的备份信息
RMAN > LIST BACKUP OF DATABASE;
2.列出指定表空间的备份信息
RMAN > LIST COPY OF TABLESPACE users;
3.列出指定数据文件的备份信息
RMAN > LIST BACKUP OF DATAFILE 'D:\DISK1\USERS01.DBF';
 
*(7) REPORT命令*
REPORT命令是一个报表命令,用于从RMAN档案资料库中获取信息并对其进行分析,帮助管理员对备份和恢复操作进行决策。
1. 用REPORT SCHEMA命令获取目标数据库中的对象结构。例如:
RMAN > REPORT SCHEMA;
2. 利用REPORT OBSOLETE命令获取根据当前备份策略可以废弃的备份信息。
RMAN > REPORT OBSOLETE;
3.利用REPORT NEED BACKUP命令获取根据当前备份策略需要进行备份的文件。
RMAN > REPORT NEED BACKUP;
\\

备份相关概念

(1)备份对象
可以使用RMAN进行的备份对象如下:
--整个数据库:备份所有的数据文件和控制文件;
--数据文件:备份指定的一个或多个数据文件;
--表空间:备份指定的一个或多个表空间;
--归档重做日志文件:备份归档重做日志文件;
--控制文件:在线备份目标数据库当前的控制文件;
--初始化参数文件:备份目标数据库的SPFILE;
--数据文件的镜像复制:备份使用BACKUP AS COPY命令创建数据文件的镜像复制;
--控制文件的镜像复制:备份使用BACKUP AS COPY命令创建控制文件的镜像复制;
--备份集:备份使用BACKUP命令创建的备份集。
使用RMAN对不同对象的备份形成的结果是一个或多个备份集或镜像文件,默认是备份集。
(2)备份形式
在RMAN中,备份分为镜像复制和备份集两种。
--镜像复制是对数据文件、控制文件和归档重做日志文件进进行精确复制,镜像复制文件与原文件大小相同,原文件中未使用的数据块也被复制到备份文件中。只有备份介质为磁盘时,才能进行镜像复制。
--备份集是RMAN创建的一个具有特定格式的逻辑对象,一个备份集在物理上由一个或多个RMAN指定格式的二进制文件组成。每一个备份文件称为一个备份片段(Backup Piece)。
(3)RMAN备份类型
基于RMAN的备份有多种备份类型,包括一致性备份与不一致性备份、数据库打开状态下的备份与关闭(指启动到mount状态)状态下的备份、完全备份与增量备份等。一致性备份是指数据库关闭后加载到mount状态,然后开始备份,利用一致性备份修复数据库后不需要进行恢复操作;不一致性备份是指数据库在打开或非正常关闭情况下的备份,利用不一致性修复数据库后还需进行恢复操作。这里我们着重介绍完全备份与增量备份。
(3.1)完全备份
完全备份的概念:完全备份就是对数据库使用过的所有数据块进行备份,没有使用过的数据块是不做备份的。在进行完全备份时,rman将数据文件中所有的非空白数据块都复制到备份集中

(3.2)增量备份
增量备份的概念:RMAN中的增量备份(Incremental Backup)是指备份数据文件时,只备份上次增量备份后被修改过的数据块,因此,增量备份要比完全备份小得多,但增量备份的时间不一定比完全备份的时间短,因为增量备份也要读取数据文件中所有的数据块。
根据增量备份所参照的基础不同,增量备份又分为差异增量备份(Differential Incremental Backup)和累积增量备份(Cumulative Incremental Backup)两种。

  • 差异增量备份:以最近级别为0或1的增量备份为基础,复制所有被修改过的数据块。 默认为差异增量备份。
  • 累积增量备份:以最近级别为0的增量备份为基础,复制所有被修改过的数据块。

例:差异增量备份
如果每周周日对数据库做级别为0的增量备份,即备份数据库中所有被使用的数据块,其余每天对数据库做差异增量备份,即周一备份相对周日的增量备份发生数据变化的数据块,周二备份相对于周一的增量备份发生数据变化的数据块,…,以此类推。备份策略应该如下图:



例:累积增量备份
如果每周周日对数据库做级别为0的增量备份,即备份数据库中所有被使用的数据块,其余每天对数据库做累积增量备份,即周一备份相对周日的增量备份发生数据变化的数据块,周二也备份相对于周日的增量备份发生数据变化的数据块,…,以此类推。备份策略应该如下图:

 

 


(4)并行备份
默认情况下,RMAN在创建备份集时只会使用一个通道向一个磁盘或磁带中写入数据,如果要备份的文件较多,可以启动多个通道同时向多个磁盘写入数据,即并行备份。
可以通过以下几种方式启用并行备份:
--使用CONFIGURE DEVICE TYPE disk/sbt命令将 PARALLELISM 参数设置大于1
--在执行BACKUP命令之前手动分配多个通道,然后在BACKUP命令中设置FILESPERSET参数,这样在备份时RMAN会根据参数设置备份集的数量,使用手动分配的通道进行并行备份。
(5)通道分配
在使用RMAN对目标数据库进行备份、修复、及恢复时,必须为操作分配通道。可以手动分配,也可以自动分配。
(5.1)自动分配
自动分配通道相关预定义参数包括:
--CONFIGURE DEFAULT DEVICE TYPE TO disk|sbt :指定自动通道的默认设备;
--CONFIGURE DEVICE TYPE disk|sbt PARALLELISM n :设置自动通道的数量;
--CONFIGURE CHANNEL DEVICE TYPE:对自动分配的所有通道进行设置;
--CONFIGURE CHANNEL n DEVICE TYPE:对自动分配的通道编号为n的进行设置。
(5.2)手动分配
可以使用RUN命令手动分配通道,语法为:
RUN{
ALLOCATE CHANNEL 通道名称 DEVICE TYPE 设备类型;
BACKUP …
}
例:为user01表空间的备份分配一个通道,设备类型为磁盘
RUN{
ALLOCATE CHANNEL ch1 DEVICE TYPE disk FORMAT '/home/%U';
BACKUP TABLESPACE usre01;
}
在RMAN命令执行器中,单独执行BACKUP命令时,使用自动分配的通道,在RUN内使用BACKUP命令,但没有手动分配通道,则使用自动分配的通道。
可以同时定义多个通道并行备份数据库,例如,使用2个通道并行备份两个数据文件。
RMAN > RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE disk;
ALLOCATE CHANNEL ch2 DEVICE TYPE disk;
BACKUP DATAFILE 1,2;
}
如果每个BACKUP语句只对应一个数据文件,则在同一时间只有一个数据文件备份,只有一个通道被激活。
RMAN > RUN{ 

ALLOCATE CHANNEL ch1 DEVICE TYPE disk; 

ALLOCATE CHANNEL ch2 DEVICE TYPE disk; 

BACKUP DATAFILE 1;

 BACKUP DATAFILE 2;

 }