RMAN(Recovery Manager) 是 Oracle 官方的备份与恢复工具,集成于数据库内核,支持在线备份、增量备份、压缩加密、块恢复等核心能力,是生产环境标准方案。
下面从 核心架构 → 配置 → 备份 → 恢复 → 常用命令 完整详解。
一、RMAN 核心架构
Target DB(目标库):被备份/恢复的数据库
Recovery Catalog(恢复目录,可选):独立库,存储多库备份元数据(生产推荐)
Channel(通道):RMAN 与存储(磁盘/磁带)的通信桥梁(可并行)
Control File(控制文件):存储备份元数据(无 Catalog 时用)
MML(介质管理层):对接磁带库(如 IBM Tivoli、Oracle Secure Backup)
连接方式
# 本地无 Catalog
rman target /
# 远程无 Catalog
rman target sys/pass@orcl
# 带 Catalog
rman target sys/pass@orcl catalog rcat_user/rcat_pass@rcat_db
二、RMAN 基础配置(必做)
1. 查看当前配置
SHOW ALL;
2. 关键 CONFIGURE 配置(生产标准)
-- 1. 保留策略(二选一)
-- 恢复窗口:保证可恢复到最近7天内任意时间
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
-- 冗余策略:保留最近2份完整备份
-- CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
-- 2. 默认设备(磁盘/磁带)
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
-- 3. 通道与备份路径(关键)
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/rman/full_%d_%T_%U.bkp';
-- 4. 控制文件自动备份(强烈建议开启)
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/cf_%F.bkp';
-- 5. 并行度(根据CPU/IO)
CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
-- 6. 备份优化(跳过未变更文件)
CONFIGURE BACKUP OPTIMIZATION ON;
-- 7. 压缩(建议开启)
CONFIGURE COMPRESS ALGORITHM MEDIUM; -- 12c+
3. 常用格式变量
%U:唯一文件名(推荐)
%d:DB_NAME
%T:YYYYMMDD
%F:控制文件专用(c-DBID-YYYYMMDD-QQ)
三、RMAN 备份(全量/增量/归档/控制文件)
1. 备份类型
全备(Full Backup):备份所有已使用数据块
增量备份(Incremental)
Level 0:基础全备(增量起点)
Level 1 差异:自上次任何级别备份以来变化
Level 1 累积:自上次 Level 0 以来变化
2. 常用备份命令
(1)全库备份(含归档)
-- 简单全备
BACKUP DATABASE PLUS ARCHIVELOG;
-- 压缩全备
BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;
-- 带标签
BACKUP DATABASE TAG 'weekly_full';
(2)增量备份(常用策略)
-- 周日:Level 0 基础全备
BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG;
-- 周一至六:Level 1 差异增量
BACKUP INCREMENTAL LEVEL 1 DATABASE PLUS ARCHIVELOG;
-- 累积增量(恢复更快)
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
(3)表空间 / 数据文件备份
BACKUP TABLESPACE users, system;
BACKUP DATAFILE 1, 4;
(4)归档日志备份
-- 备份所有归档并删除已备份
BACKUP ARCHIVELOG ALL DELETE INPUT;
-- 备份最近24小时归档
BACKUP ARCHIVELOG FROM TIME 'SYSDATE-1';
(5)控制文件 / spfile
BACKUP CURRENT CONTROLFILE;
BACKUP SPFILE;
3. 备份管理
-- 查看备份
LIST BACKUP;
LIST BACKUP OF DATABASE;
-- 校验备份(磁盘存在性)
CROSSCHECK BACKUP;
-- 删除过期/废弃
DELETE OBSOLETE;
DELETE EXPIRED BACKUP;
四、RMAN 恢复(RESTORE + RECOVER)
核心概念
RESTORE(还原):从备份集把文件拷回原路径
RECOVER(恢复):应用归档/联机日志,使数据一致
场景 1:全库恢复(灾难恢复)
前提:数据文件/控制文件丢失,数据库无法启动
-- 1. 启动到 nomount
STARTUP NOMOUNT;
-- 2. 恢复控制文件(从自动备份)
SET DBID=123456789; -- 从备份文件名获取
RESTORE CONTROLFILE FROM AUTOBACKUP;
-- 3. 挂载数据库
ALTER DATABASE MOUNT;
-- 4. 还原数据文件
RESTORE DATABASE;
-- 5. 应用日志恢复(到最新)
RECOVER DATABASE;
-- 6. 打开并重置日志(不完全恢复必须)
ALTER DATABASE OPEN RESETLOGS;
场景 2:表空间 / 数据文件恢复(在线)
-- 1. 离线损坏表空间
SQL> ALTER TABLESPACE users OFFLINE;
-- 2. RMAN 还原
RESTORE TABLESPACE users;
-- 3. 恢复
RECOVER TABLESPACE users;
-- 4. 在线
SQL> ALTER TABLESPACE users ONLINE;
场景 3:不完全恢复(误删除/误操作)
STARTUP MOUNT;
RUN {
SET UNTIL TIME "TO_DATE('2026-04-13 10:00:00','YYYY-MM-DD HH24:MI:SS')";
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
}
场景 4:块修复(少量坏块)
RECOVER DATAFILE 4 BLOCK 123;
五、RMAN 常用脚本模板
1. 每日增量备份脚本
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
ALLOCATE CHANNEL c2 DEVICE TYPE DISK;
BACKUP INCREMENTAL LEVEL 1 DATABASE PLUS ARCHIVELOG
FORMAT '/backup/rman/incr_%d_%T_%U.bkp'
AS COMPRESSED BACKUPSET;
DELETE OBSOLETE;
RELEASE CHANNEL c1;
RELEASE CHANNEL c2;
}
2. 全库备份脚本(每周)
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
BACKUP DATABASE PLUS ARCHIVELOG
TAG 'weekly_full'
FORMAT '/backup/rman/full_%d_%T_%U.bkp'
AS COMPRESSED BACKUPSET;
DELETE OBSOLETE;
}
六、关键注意事项
必须开启归档模式ARCHIVE LOG LIST; -- 查看
ALTER DATABASE ARCHIVELOG;
控制文件自动备份必须 ON(丢失后可恢复)
备份要校验:CROSSCHECK+RESTORE ... VALIDATE
保留策略:生产用 RECOVERY WINDOW 更稳妥
压缩:建议启用,节省 50%–80% 空间
Catalog:多库环境建议独立 Catalog
七、速查清单
配置:CONFIGURE/SHOW ALL
备份:BACKUP DATABASE/TABLESPACE/ARCHIVELOG
还原:RESTORE DATABASE/TABLESPACE/CONTROLFILE
恢复:RECOVER DATABASE/TABLESPACE
管理:LIST/CROSSCHECK/DELETE OBSOLETE