Oracle RMAN基础

用户管理的备份与恢复方法比较复杂,需要对Oracle比较了解。从Oracle 8开始,Oracle提供了一个比较容易操作的工具RMAN,Oracle推荐使用这个工具进行备份和恢复。

1. RMAN介绍

Recovery Manager(RMAN)是一个用于备份(Backup)、还原(Restore)和恢复(Recover)的Oracle工具,它能够备份整个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及Spfile参数文件。使用RMAN也能进行增量数据备份,增量备份能节约时间和空间,因为增量RMAN备份只备份自上次备份以来有变化的数据块。RMAN还提供许多高级功能,如数据库的克隆、建立备用数据库、备份与移动裸设备等。

和用户管理的备份方式相比,使用 RMAN 具有以下一系列的优点:

  • 备份执行期间不需要人工介入,从而减少了误操作的可能。
  • 可以有效的将备份和恢复结合起来。
  • 支持除逻辑备份以外的所有备份类型,包括完全备份、增量备份、表空间备份、数据文件备份、控制文件备份以及归档日志文件备份等。
  • 可以通过 RMAN 识别 corrupted block,并可以通过 RMAN 进行块级恢复。
  • 方便的实现定期(定时)备份。
  • 自动生成备份日志。
  • RMAN 的备份脚本和 OS 无关,方便移植。
  • 强大的报表功能可以方便地获悉备份的可用性。
  • RMAN 备份可以跳过未使用过的数据块,从而缩减备份集大小。当使用系统工具拷贝Oracle文件进行备份时,是无法区分Oracle数据块是否使用的,RMAN则可以根据高水位标记(High Water Mark-HWM)来识别从未使用过的数据块,在备份时这些数据块可以被跳过。
  • 从 Oracle 10g 开始, Oracle 可以对备份集进行压缩,从而缩减备份空间的占用。备份压缩会消耗额外的CPU资源,但是可以节省存储,具体应该根据系统情况进行考虑。
  • 从 Oracle10g 开始,通过 RMAN可以实现跨平台的表空间迁移。

可以看到,以上的一些优点中,显示了RMAN强大的功能。RMAN备份与恢复是基于块级别的,通过比较数据块避免备份没有使用过的块。

2. RMAN组成

RMAN的组成如图:

组成RMAN的各组件如下:

1.RMAN工具

RMAN的命令集合起源于Oracle 8,一般位于$ORACLE_HOME/bin 目录下。用户可以通过运行rman命令来启动RMAN工具。

2. 服务器进程

RMAN的服务器进程是一个后台进程,用于与RMAN工具与数据库之间的通信,也用于RMAN工具与磁盘/磁带等I/O设备之间的通信,服务器进程负责备份与恢复的所有工作。

3. 通道

通道是服务器进程与I/O 设备之间读写的途径。一个通道将对应一个服务进程。在分配通道时,需要考虑I/O设备的类型、I/O并发处理的能力、I/O设备能创建的文件的大小、数据库文件最大的读速率、最大的打开文件数目等因素。

4. 目标数据库

目标数据库就是使用RMAN 进行备份与恢复的数据库。RMAN可以备份除了日志文件、Pfile、口令文件之外的数据文件、控制文件、归档日志文件、Spfile文件。

5. 恢复目录

用来保存备份与恢复信息的一个数据库,不建议创建在目标数据库上。利用恢复目录可以同时管理多个目标数据库,存储更多的备份信息,存储备份脚本。如果不采用恢复目录,可以采用控制文件来代替恢复目录。

6.介质管理层

Media Management Layer(MML)是一个第三方工具,用于管理对磁带的读写与文件的跟踪管理。

7.备份集与备份片

使用备份命令备份数据库后,RMAN将备份存到一个或多个物理文件中,这些物理文件就是一个备份集,备份集是一个逻辑结构。备份集内的物理文件就是备份片。备份片是最基本的物理结构,可以存在磁盘或者磁带上,可以包含目标数据库的数据文件、控制文件、归档日志与Spfile文件。

8.RMAN 资料库

RMAN资料库(RMAN Repository)存储了目标数据库的元数据(Metadata )和使用RMAN备份的备份集信息,例如备份集的位置,备份集内包括的备份片,备份集的状态等。RMAN进行备份和恢复操作都要访问RMAN资料库。

3.连接RMAN

运行RMAN需要SYSDBA 系统权限。RMAN工具版本与目标数据库必须是同一个版本。如果使用了恢复目录,还需要注意创建RMAN恢复目录的脚本版本必须等于或大于恢复目录所在数据库的版本。创建RMAN恢复目录的脚本版本必须等于或大于目标数据库的版本。

3.1 启动RMAN

使用RMAN 必须连接到目标数据库。如果使用恢复目录,还要使用恢复目录数据库;如果使用辅助数据库,还要连接到辅助数据库。连接到数据库的方法有两种:一是在启动RMAN命令时指定要连接的数据库;二是在启动RMAN后在RMAN提示符下输入CONNECT命令连接数据库。

使用CONNECT 命令连接目标数据库时,如果使用恢复目录,就在CONNECT命令后面指定CATALOG选项,使用NOCATALOG选项指定不使用恢复目录,默认不使用恢复目录。CONNECT命令连接到目标数据库的格式是:

CONNECT TARGET 用户名/口令@连接描述符

如果要连接到恢复目录数据库,指定CATALOG 选项,格式如下:

CONNECT CATALOG 用户名/口令@连接描述符

如果要连接到辅助数据库,指定AUXILIARY 选项,格式如下:

CONNECT AUXILIARY 用户名/口令@连接描述符 

3.2 运行RMAN命令

RMAN可以运行单个命令,也可以运行一个命令块、脚本文件命令。

1.执行单个命令

大多数RMAN 命令都可以单独执行。这些命令包括关闭目标数据库命令SHUTDOWN、启动目标数据库命令STARTUP、备份表空间BACKUP TABLESPACE命令等。下面的命令备份USERS表空间:

RMAN> BACKUP FORMAT '/u01/rman/%d_%s.bak'  TABLESPACE USERS; 

Starting backup at 28-JUN-18
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf
channel ORA_DISK_1: starting piece 1 at 27-JUN-18
channel ORA_DISK_1: finished piece 1 at 27-JUN-18
piece handle=/u01/rman/ORCL_5.bak tag=TAG20180627T134122 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 28-JUN-18

Starting Control File and SPFILE Autobackup at 28-JUN-18
piece handle=/u01/app/oracle/flash_recovery_area/ORCL/autobackup/2018_06_27/o1_mf_s_979911683_fm68w3xo_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 28-JUN-18

2. 运行一个命令块

在RMAN下可以运行命令块。命令块是一组RMAN命令。当执行一个任务时,可以将这个任务的所有命令放在一个命令块中。但CONNECT、CREATE/DELETE/UPDATECATALOG、CREATE/DELETE/REPLACESCRIPT、LIST等RMAN命令不能包含在RUN命令块内。以下是执行命令块的例子:

RMAN>  run {  
2> allocate channel d1 type disk;  
3> BACKUP FORMAT 'D: \%d_%s.bak' TABLESPACE USERS;  
4> release channel d1; 
5> } 

3. 运行SQL命令

在RMAN中可以运行 SQL 命令,运行SQL 命令的格式是:

RMAN>SQL 'SQL 语句';
例如:
RMAN>SQL 'ALTER SYSTEM CHECKPOINT';

4.运行脚本

可以使用RMAN 运行脚本。存储了脚本后,在RUN块内运行。例如,以下命令执行脚本文件S1:

RMAN> RUN { EXECUTE SCRIPT S1;} 

5. 运行操作系统命令

在RMAN内可以运行操作系统命令,运行操作系统命令的格式为:

RMAN> host 'pwd';

/u01/rman
host command complete

4. RMAN 的配置

从Oracle 9i 开始,Oracle 为RMAN会话进行了默认的环境配置。用户也可以通过CONFIGURE命令配置RMAN的环境。

使用show all 命令可以显示已配置的所有 RMAN信息,

RMAN> show all;

using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name ORCL are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
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 '/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_orcl.f'; # default

4.1 设置备份保持策略

使用RMAN 对数据库执行多次备份后,可能存在多个备份文件。保持策略就是设置将备份文件置为陈旧Obsolete的时机。有两种备份保持策略:一个是时间策略,决定多长时间后将备份置陈旧标记;一个是冗余策略,规定最多能保留几个冗余备份。

表示从当前日期开始算起,将5 天之前的备份标记为陈旧 Obsolete:

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 5 DAYS;

表示只能保留5 个冗余的备份,超过 5 个后,超过的备份置陈旧标记:

RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 5;  

表示使用NONE 子句使备份保持策略失效:

RMAN> CONFIGURE RETENTION POLICY TO NONE;  

4.2 设置控制文件自动备份

从Oracle 9i 开始,可以配置控制文件的自动备份,但是这个设置不能使用在备用数据库上。通过以下命令设置控制文件自动备份:

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

对于没有恢复目录的备份策略来说,这个特性是特别有效的,控制文件的自动备份发生在任何backup或者copy命令之后,或者任何数据库的结构改变之后。

4.3 设置并行备份

RMAN支持并行备份与恢复,也可以在配置中指定默认的并行程度,例如:

RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4; 

在以后的备份与恢复中,将采用并行度为4,即同时开启4个通道进行备份与恢复。当然也可以在run的运行块中指定通道来决定备份与恢复的并行数目。并行的数目决定了开启通道的个数。如果指定了通道配置,将采用指定的通道,如果没有指定通道,将采用默认通道配置。

4.4 配置默认I/O 设备类型

I/O 设备类型可以是磁盘或者磁带,默认是磁盘,通过以下命令配置默认设备类型:

RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;  

设置默认I/O 设备为磁盘。

4.5 配置多重备份

如果单个备份不保险,可以同时生成多个备份集。例如:

RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;

备份数据文件时向磁盘备份两个完全一样的备份集

RMAN> CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 2;

4.6 备份优化

备份优化用于在一些特殊条件下跳过某个特定备份。使用语句BACKUP DATABASE、BACKUP ARCHIVELOG ALL/LIKE或者BACKUP BACKUPSET ALL进行备份优化,默认情况下,RMAN禁止备份优化,使用以下语句开启备份优化:

RMAN>CONFIGURE BACKUP OPTIMIZATION ON;

5. 备份文件的格式

备份文件可以自定义各种各样的格式,格式的符号如下。

  • %c:备份片的复制数。
  • %d:数据库名称。
  • %D:位于该月中的第几天(DD)。
  • %M:位于该年中的第几月(MM)。
  • %F:一个基于 DBID唯一的名称,这个格式的形式为 c -IIIIIIIIII- YYYYMMDD-QQ,其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD为日期,QQ是一个1~256的序列。
  • %n:数据库名称,向右填补到最多 8 个字符。
  • %u:一个8 个字符的名称代表备份集与创建时间。
  • %p:该备份集中的备份片号,从 1 开始到创建的文件数。
  • %U:一个唯一的文件名,代表- %u_- %p_- %c 。
  • %s:备份集的号。
  • %t:备份集时间戳。
  • %T:年月日格式(YYYYMMDD)。
原文地址:https://www.sunansheng.com/blog/20180522/oracle-rman.html