从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 配置参数已成功重置为默认值