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