导航

9. RMAN 基础

Posted on 2008-10-01 10:15  毅无涯  阅读(350)  评论(0编辑  收藏  举报

从ORACLE DATABASE 8.0 版本开始,ORACLE 公司提供了实用程序RMAN(Recovery Manager,恢复管理器)。

9.1 RMAN 组成

9.1.1 RMAN 组件

1. 目标数据库(target database)

目标数据库是指要执行备份、转储和恢复操作的数据库,它实际是指应用系统所涉及到的产品数据库。对于OLTP 系统来说,ORACLE 建议目标数据库采用ARCHIVELOG 模式;对于只读应用系统(DSS) 来说,ORACLE 建议目标数据库采用NOARCHIVELOG 模式。

2. 服务器进程

在使用RMAN 执行备份、恢复和转储操作之前,必须先要连接到目标数据库。当连接到目标数据库时,会建立两个连接到目标数据库的服务器进程。其中默认服务器进程用于解析RMAN 命令,并生成隐含执行的PL/SQL块;轮询服务器进程用于检测备份、转储和恢复操作是否已经完成。

3. 通道(Channel)

通道用于执行和记录备份、转储和恢复操作,当使用RMAN 在存储设备上执行备份、转储和恢复操作时,RMAN 需要在存储设备和目标数据库之间建立连接,该连接被称为通道。

4. RMAN 资料库(Recovery Manager Repository) 和RMAN 元数据(Recovery Manager Metadata)

RMAN 元数据是指RMAN 在备份、转储和恢复操作中所使用的数据,RMAN 元数据的集合被称为RMAN 资料库。

5. 恢复目录

恢复目录用于存放RMAN 元数据,它是存放在RMAN 元数据的一个可选设置。当使用目标数据库控制文件存放RMAN 元数据时,在RMAN 元数据存放天数达到初始化参数control_file_record_keep_time 的值之后,其元数据可能会被覆盖,从而导致之前的备份不能使用;通过使用恢复目录,可以永久保留需要的RMAN 元数据。另外,在恢复目录中还可以存放存储脚本。

6. 介质管理层(Media Management Layer)

介质管理层是RMAN 与供应商磁带设备进行I/O操作的软件层。通过使用介质管理层,可以使得RMAN 与磁带设备之间进行通信,从而可以通过磁带执行备份、转储和恢复操作。

7. RMAN 包(Recovery Manager package)

当执行RMAN 命令时,服务器进程首先会将RMAN 命令解析为PL/SQL 块,然后服务器进程通过执行该PL/SQL块完成RMAN 命令任务。

RMAN 命令是由三个PL/SQL 包来完成的。dbms_backup_restore 用于执行备份、转储和恢复操作;dbms_rcvcat 用于维护恢复目录;dbms_rcvman 用于查询恢复目录和目标数据库控制文件。

 

9.1.2 RMAN 的特点

1. 备份数据库、表空间、数据文件、控制文件、归档日志和SPFILE

当使用RMAN 执行备份操作时,可以备份数据库、表空间、数据文件、控制文件、归档日志和SPFILE,但不能备份重做日志、PFILE和口令文件。因为RMAN 备份是由目标数据库的服务器进程来完成的,所以要求目标数据库必须处于MOUNT 或OPEN 状态。

2. 存储频繁执行的备份和恢复操作

如果需要定期执行备份或恢复操作,可以将备份和恢复的相关RMAN 操作存放到存储脚本中。如果使用存储脚本,必须配置恢复目录。

3. 跳过未用块

当使用用户管理的备份时,备份文件尺寸和源文件完全一致;如果使用RMAN 生成备份集,那么只会备份已经使用的数据块,而跳过未用的数据块,更加节省存储空间。

4. 执行增量块级备份

当使用RMAN 生成备份集(backup set)时,可以使用增量备份和累积备份减少备份时间。如果不使用增量备份,那么每次都会备份相应数据文件的所有已用块;如果使用增量备份,那么只备份先前备份以来变化的数据块,从而大大减少了备份时间。

5. 指定备份限制

当使用RMAN 生成备份集时,可以指定备份集最大尺寸和备份片(backup piece) 最大尺寸。通过限制备份片的最大尺寸,可以有效地将一个备份集的内容分布到多个磁带上。

6. 在备份时检测损坏块

当使用用户管理的备份时,即使数据文件存在损坏块,仍然可以正常进行数据文件备份。如果要检查用户管理备份是否存在损坏块,必须使用DBVERIFY工具进行检查。当使用RMAN 执行备份时,服务器进程会自动将数据块损坏信息写入动太性能视图。通过查看动态性能视图V$BACKUP_CORRUPTION,可以查看BACKUP 命令所检测到的损坏数据块;通过查询动态性能视图V$COPY_CORRUPTION,可以查看COPY 命令或BACKUP AS COPY 命令所检测到的损坏数据块。

7. 自动使用并行化特征提高备份和恢复性能

如果数据库所在服务器具有多个CPU,那么执行备份和恢复操作之前可以分配多个通道。当分配多个通道之后,RMAN 会自动启用多个服务器进程并行执行备份和恢复操作,从而提高备份和恢复的性能。

 

9.2 运行RMAN

C:\>rman help

参数       值          说明
-----------------------------------------------------------------------------
target       加引号的字符串  目标数据库连接字符串
目录      加引号的字符串  恢复目录的连接字符串
nocatalog    无           如果已指定, 则没有恢复目录
cmdfile      加引号的字符串  输入命令文件的名称
log        加引号的字符串  输出消息日志文件的名称
跟踪        加引号的字符串  输出调试信息日志文件的名称
append       无           如果已指定, 日志将以附加模式打开
debug        可选参数  激活调试
msgno        无           对全部消息显示 RMAN-nnnn 前缀
send         加引号的字符串  将命令发送到介质管理器
pipe         字符串         管道名称的构建块
timeout      整数        等待管道输入的秒数
checksyntax  无           检查命令文件中的语法错误
-----------------------------------------------------------------------------

9.2.1 连接到RMAN

1. 连接到目标数据库(不使用恢复目录)

在命令行连接:

C:\>rman target sys/orcl@demo nocatalog

恢复管理器: Release 10.2.0.1.0 - Production on 星期二 9月 30 10:24:56 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到目标数据库: DEMO (DBID=3408444956)
使用目标数据库控制文件替代恢复目录

RMAN 提示符下连接:

C:\>rman nocatalog

恢复管理器: Release 10.2.0.1.0 - Production on 星期二 9月 30 10:27:29 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

RMAN> connect target sys/orcl@demo

连接到目标数据库: DEMO (DBID=3408444956)
使用目标数据库控制文件替代恢复目录

2. 连接到目标数据库和恢复目录数据库

在命令行连接:

C:\>rman target sys/orcl@demo catalog  rman/rman@rcat

RMAN 提示符下连接:

C:\>rman

RMAN> connect target sys/orcl@demo

RMAN> connect catalog rman/rman@rcat

 

3. 连接到目标数据库和辅助数据库

在命令行连接:

C:\>rman target sys/orcl@demo auxiliary sys/admin@aux

RMAN 提示符下连接:

C:\>rman

RMAN> connect target sys/orcl@demo

RMAN> connect auxiliary sys/admin@aux

 

9.2.2 RMAN 命令

当使用RMAN 执行各种操作时,可以使用独立命令(Standalone Command)和作业命令(Job Command)两种类型的命令。

1. 独立命令

独立命令是指单独执行的命令。

(1) 关闭目标数据库。

RMAN> shutdown immediate

使用目标数据库控制文件替代恢复目录
数据库已关闭
数据库已卸载
Oracle 实例已关闭

(2) 启动目标数据库。

RMAN> startup

(3) 备份USERS 表空间。

RMAN> backup format 'd:\0930\%d_%s.bak' tablespace users;

启动 backup 于 30-9月 -08
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=141 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00004 name=D:\DEMO\USERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 30-9月 -08
通道 ORA_DISK_1: 已完成段 1 于 30-9月 -08
段句柄=D:\0930\DEMO_2.BAK 标记=TAG20080930T185932 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:25
完成 backup 于 30-9月 -08

 

2. 作业命令

作业命令是指以成组方式执行的命令。

RMAN> run{
2> allocate channel d1 type disk;
3> backup format 'd:\0930\%d_%s.bak' tablespace users;
4> release channel d1;
5> }

分配的通道: d1
通道 d1: sid=141 devtype=DISK

启动 backup 于 30-9月 -08
通道 d1: 启动全部数据文件备份集
通道 d1: 正在指定备份集中的数据文件
输入数据文件 fno=00004 name=D:\DEMO\USERS01.DBF
通道 d1: 正在启动段 1 于 30-9月 -08
通道 d1: 已完成段 1 于 30-9月 -08
段句柄=D:\0930\DEMO_3.BAK 标记=TAG20080930T190526 注释=NONE
通道 d1: 备份集已完成, 经过时间:00:00:25
完成 backup 于 30-9月 -08

释放的通道: d1

 

3. 运行SQL 命令

RMAN> sql 'alter system switch logfile';

sql 语句: alter system switch logfile

RMAN> sql "create tablespace user02
2>  datafile ''e:\user02.dbf'' size 5M";

sql 语句: create tablespace user02 datafile ''e:\user02.dbf'' size 5M

 

4. 运行存储脚本

RMAN> run {execute script s1;}

 

5. 运行操作系统命令

RMAN> run {host "dir d:\0930";}

驱动器 D 中的卷没有标签。
卷的序列号是 B040-8677

d:\0930 的目录

2008-09-30  19:05    <DIR>          .
2008-09-30  19:05    <DIR>          ..
2008-09-30  18:59       245,186,560 DEMO_2.BAK
2008-09-30  19:05       245,186,560 DEMO_3.BAK
               2 个文件    490,373,120 字节
               2 个目录 16,708,407,296 可用字节
主机命令完成

 

6.  运行RMAN 命令

交互方式:

RMAN> run{
2> configure channel device type disk maxpiecesize 100M;
3> backup format 'd:\0930\%d_%s_%p.bak' tablespace system;
4> }

新的 RMAN 配置参数:
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 100 M;
已成功存储新的 RMAN 配置参数

启动 backup 于 30-9月 -08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=141 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:\DEMO\SYSTEM01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 30-9月 -08
通道 ORA_DISK_1: 已完成段 1 于 30-9月 -08
段句柄=D:\0930\DEMO_4_1.BAK 标记=TAG20080930T211428 注释=NONE
通道 ORA_DISK_1: 正在启动段 2 于 30-9月 -08
通道 ORA_DISK_1: 已完成段 2 于 30-9月 -08
段句柄=D:\0930\DEMO_4_2.BAK 标记=TAG20080930T211428 注释=NONE
通道 ORA_DISK_1: 正在启动段 3 于 30-9月 -08
通道 ORA_DISK_1: 已完成段 3 于 30-9月 -08
段句柄=D:\0930\DEMO_4_3.BAK 标记=TAG20080930T211428 注释=NONE
通道 ORA_DISK_1: 正在启动段 4 于 30-9月 -08
通道 ORA_DISK_1: 已完成段 4 于 30-9月 -08
段句柄=D:\0930\DEMO_4_4.BAK 标记=TAG20080930T211428 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:00
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 30-9月 -08
通道 ORA_DISK_1: 已完成段 1 于 30-9月 -08
段句柄=D:\0930\DEMO_5_1.BAK 标记=TAG20080930T211428 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 30-9月 -08

 

批处理方式:

D:\0930\bak_users.cmd 文件内容:

backup format 'd:\0930\%d_%s.bak' tablespace users;
sql 'alter system archive log current';

执行批处理:

C:\>rman target sys/orcl@demo nocatalog @d:\0930\bak_users.cmd log d:\0930\users
.log
RMAN> 2> 3>

D:\0930\users.log 日志文件内容:

恢复管理器: Release 10.2.0.1.0 - Production on 星期二 9月 30 21:29:35 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到目标数据库: DEMO (DBID=3408444956)
使用目标数据库控制文件替代恢复目录

RMAN> backup format 'd:\0930\%d_%s.bak' tablespace users;
2> sql 'alter system archive log current';
3>
启动 backup 于 30-9月 -08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=137 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00004 name=D:\DEMO\USERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 30-9月 -08
通道 ORA_DISK_1: 已完成段 1 于 30-9月 -08
段句柄=D:\0930\DEMO_10.BAK 标记=TAG20080930T212939 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:25
完成 backup 于 30-9月 -08

sql 语句: alter system archive log current

恢复管理器完成。

 

9.3 配置RMAN 环境

1. 配置自动通道

(1) 配置自动通道并行度。

默认并行度为1。通过使用CONFIGURE DEVICE TYPE ... PARALLELISM integer,可以配置通道并行度。例如将磁盘和磁带并行度配置为3:

RMAN> configure device type disk parallelism 3;

新的 RMAN 配置参数:
CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
已成功存储新的 RMAN 配置参数

RMAN> configure device type sbt parallelism 3;

新的 RMAN 配置参数:
CONFIGURE DEVICE TYPE 'SBT_TAPE' PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
已成功存储新的 RMAN 配置参数

(2) 配置所有通道的备份文件格式。

RMAN> configure channel device type disk format 'd:\backup\%d_%s_

旧的 RMAN 配置参数:
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 1024 M;
新的 RMAN 配置参数:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   'd:\backup\%d_%s_%p.b
已成功存储新的 RMAN 配置参数

 

(3) 配置特定通道的备份文件格式。

RMAN> configure channel 1 device type disk format 'd:\backup\%d_%s_%p.bak';

新的 RMAN 配置参数:
CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT   'd:\backup\%d_%s_%p.bak';
已成功存储新的 RMAN 配置参数

RMAN> configure channel 2 device type disk format 'd:\backup\%u.bak';

新的 RMAN 配置参数:
CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT   'd:\backup\%u.bak';
已成功存储新的 RMAN 配置参数

 

(4) 配置默认存储设备。

默认为磁带:

RMAN> configure default device type to sbt;

新的 RMAN 配置参数:
CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';
已成功存储新的 RMAN 配置参数

默认为磁盘:

RMAN> configure default device type to disk;

旧的 RMAN 配置参数:
CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';
新的 RMAN 配置参数:
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
已成功存储新的 RMAN 配置参数

 

2. 配置备份集和备份片最大尺寸

当配置备份集最大尺寸时,必须确保其尺寸可以容纳最大数据文件的备份集。

RMAN> configure maxsetsize to 2G;

新的 RMAN 配置参数:
CONFIGURE MAXSETSIZE TO 2 G;
已成功存储新的 RMAN 配置参数

RMAN> configure channel device type disk maxpiecesize 500M;

旧的 RMAN 配置参数:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   'd:\backup\%d_%s_%p.bak';
新的 RMAN 配置参数:
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 500 M;
已成功存储新的 RMAN 配置参数

 

3. 配置备份优化

RMAN> CONFIGURE BACKUP OPTIMIZATION ON;

新的 RMAN 配置参数:
CONFIGURE BACKUP OPTIMIZATION ON;
已成功存储新的 RMAN 配置参数

 

4. 配置多重备份

默认情况下,只会生成一个备份片副本。

RMAN> configure datafile backup copies for device type disk to 3;

新的 RMAN 配置参数:
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 3;
已成功存储新的 RMAN 配置参数

 

5. 配置免除表空间

默认情况下,执行BACKUP DATABASE 命令时,会备份除了临时表空间外的所有表空间。

RMAN> configure exclude for tablespace user02;

今后的全部数据库备份将排除表空间 USER02
已成功存储新的 RMAN 配置参数

 

6. 配置备份冗余策略

当使用RMAN 在数据文件和控制文件上执行了多次备份之后,将来介质恢复可能不再需要过去的备份。通过配置备份冗余策略,可以使得RMAN 将早期备份标记为陈旧,并且使用DELETE OBSOLETE 命令可以删除陈旧备份。

RMAN> configure retention policy to redundancy 2;

新的 RMAN 配置参数:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
已成功存储新的 RMAN 配置参数

 

7. 配置辅助例程的数据文件名

当使用RMAN 执行表空间时间点恢复或复制数据库时,可能需要设置辅助例程的数据文件名。

RMAN> configure auxname for datafile 2 to 'd:\auxi\df_2.dbf';

 

8. 配置快照控制文件名

当重新同步恢复目录或者备份控制文件时,RMAN 需要建立快照控制文件。快照控制文件的默认名称为%ORACLE_HOME%database\snfcSID.ora。

RMAN> configure snapshot controlfile name to 'D:\oracle\product\10.2.0\snfcDEMO.ORA';

快照控制文件名已设置为: D:\oracle\product\10.2.0\snfcDEMO.ORA
已成功存储新的 RMAN 配置参数

 

9. 显示RMAN 配置

如果要显示RMAN 环境配置,则可以用SHOW 命令。

(1) 显示所有RMAN 环境配置。

RMAN> show all;

RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
CONFIGURE DEVICE TYPE 'SBT_TAPE' PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 3;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 500 M;
CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT   'd:\backup\%d_%s_%p.bak';
CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT   'd:\backup\%u.bak';
CONFIGURE MAXSETSIZE TO 2 G;
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE EXCLUDE FOR TABLESPACE 'USER02';
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\10.2.0\SNFCDEMO.ORA';

 

(2) 显示默认设备类型。

RMAN> show default device type;

RMAN 配置参数为:
CONFIGURE DEFAULT DEVICE TYPE TO DISK;

 

(3) 显示自动通道配置。

RMAN> show channel for device type disk;

RMAN 配置参数为:
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 500 M;
CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT   'd:\backup\%d_%s_%p.bak';
CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT   'd:\backup\%u.bak';

RMAN> show channel for device type sbt;

RMAN 配置参数为:
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 500 M;
CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT   'd:\backup\%d_%s_%p.bak';
CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT   'd:\backup\%u.bak';

 

(4) 显示备份冗余策略。

RMAN> show retention policy;

RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;

 

(5) 显示备份优化。

RMAN> show backup optimization;

RMAN 配置参数为:
CONFIGURE BACKUP OPTIMIZATION ON;

 

(6) 显示快照控制文件。

RMAN> show snapshot controlfile name;

RMAN 配置参数为:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\10.2.0\SNFCDEMO.ORA';

 

(7) 显示备份集最大尺寸。

RMAN> show maxsetsize;

RMAN 配置参数为:
CONFIGURE MAXSETSIZE TO 2 G;

 

(8) 显示多重备份。

RMAN> show archivelog backup copies;

RMAN 配置参数为:
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default

 

(9) 清除RMAN 配置。

RMAN> configure retention policy clear;

旧的 RMAN 配置参数:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
RMAN 配置参数已成功重置为默认值