rman 配置,备份,还原
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
浙公网安备 33010602011771号