Oracle RMAN 备份脚本大全详解
Oracle RMAN 备份脚本大全详解
适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
RMAN 备份脚本实战汇总[1]:
详细见:Oracle RMAN 备份恢复全集、Oracle 备份策略与最佳实践。
2. 全库备份
2.1 基本
rman target / <<EOF
BACKUP DATABASE PLUS ARCHIVELOG;
EOF
2.2 完整
rman target / <<EOF
RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;
ALLOCATE CHANNEL ch2 DEVICE TYPE DISK;
BACKUP DATABASE
FORMAT '/u01/backup/db_%d_%T_%U.bkp'
TAG 'full_db'
PLUS ARCHIVELOG
FORMAT '/u01/backup/arc_%d_%T_%U.bkp';
RELEASE CHANNEL ch1;
RELEASE CHANNEL ch2;
}
EOF
2.3 含控制文件
BACKUP DATABASE
INCLUDE CURRENT CONTROLFILE
PLUS ARCHIVELOG;
3. 增量备份
3.1 Level 0
rman target / <<EOF
BACKUP INCREMENTAL LEVEL 0 DATABASE
FORMAT '/u01/backup/inc0_%d_%T_%U.bkp'
TAG 'inc_level_0';
EOF
3.2 Level 1
rman target / <<EOF
BACKUP INCREMENTRAL LEVEL 1 DATABASE
FORMAT '/u01/backup/inc1_%d_%T_%U.bkp'
TAG 'inc_level_1';
EOF
3.3 累积
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
3.4 BCT
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING
USING FILE '/u01/oradata/bct.f';
详细见:Oracle RMAN 增量备份策略。
4. 表空间备份
rman target / <<EOF
BACKUP TABLESPACE users, system
FORMAT '/u01/backup/tbs_%s_%p.bkp';
EOF
5. 数据文件备份
rman target / <<EOF
BACKUP DATAFILE 1, 2, 3
FORMAT '/u01/backup/df_%s.bkp';
EOF
6. 归档日志备份
6.1 全部
BACKUP ARCHIVELOG ALL
FORMAT '/u01/backup/arc_%s.bkp'
DELETE INPUT;
6.2 范围
BACKUP ARCHIVELOG
FROM TIME 'SYSDATE-1'
UNTIL TIME 'SYSDATE'
FORMAT '/u01/backup/arc_%s.bkp';
6.3 SCN
BACKUP ARCHIVELOG FROM SCN 12345 UNTIL SCN 67890;
7. 控制文件备份
7.1 自动
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/backup/cf_%F.bkp';
7.2 手动
BACKUP CURRENT CONTROLFILE
FORMAT '/u01/backup/cf_%s.bkp';
7.3 SPFILE
BACKUP SPFILE FORMAT '/u01/backup/spfile_%s.bkp';
8. 压缩备份
BACKUP AS COMPRESSED BACKUPSET DATABASE
FORMAT '/u01/backup/comp_%d_%U.bkp';
详细见:Oracle 备份压缩与加密。
9. 加密备份
9.1 透明加密
-- Wallet 配置
CONFIGURE ENCRYPTION FOR DATABASE ON;
CONFIGURE ENCRYPTION ALGORITHM 'AES256';
BACKUP DATABASE;
9.2 密码加密
SET ENCRYPTION ON IDENTIFIED BY ****** ONLY;
BACKUP DATABASE FORMAT '/u01/backup/enc_%U.bkp';
10. 恢复脚本
10.1 完全恢复
rman target / <<EOF
STARTUP MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN;
EOF
10.2 不完全恢复
RUN {
SET UNTIL TIME "TO_DATE('2026-07-21 10:00:00', 'YYYY-MM-DD HH24:MI:SS')";
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
}
10.3 表空间
SQL 'ALTER TABLESPACE users OFFLINE';
RESTORE TABLESPACE users;
RECOVER TABLESPACE users;
SQL 'ALTER TABLESPACE users ONLINE';
10.4 数据文件
SQL 'ALTER DATABASE DATAFILE 5 OFFLINE';
RESTORE DATAFILE 5;
RECOVER DATAFILE 5;
SQL 'ALTER DATABASE DATAFILE 5 ONLINE';
10.5 控制文件
STARTUP NOMOUNT;
SET DBID 1234567890;
RESTORE CONTROLFILE FROM AUTOBACKUP;
ALTER DATABASE MOUNT;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
11. 验证
11.1 VALIDATE
BACKUP VALIDATE DATABASE;
BACKUP VALIDATE DATABASE ARCHIVELOG ALL;
RESTORE DATABASE VALIDATE;
11.2 检查
SELECT * FROM v$backup_corruption;
SELECT * FROM v$copy_corruption;
12. 维护
12.1 交叉检查
CROSSCHECK BACKUP;
CROSSCHECK ARCHIVELOG ALL;
CROSSCHECK COPY;
12.2 删除过期
DELETE EXPIRED BACKUP;
DELETE EXPIRED ARCHIVELOG ALL;
DELETE OBSOLETE;
12.3 保留策略
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
12.4 报告
REPORT NEED BACKUP;
REPORT OBSOLETE;
LIST BACKUP SUMMARY;
13. Catalog
13.1 注册
rman target / catalog rcat/password@rcat
REGISTER DATABASE;
13.2 同步
RESYNC CATALOG;
详细见:Oracle RMAN 恢复目录。
14. 调度
14.1 Shell 脚本
#!/bin/bash
export ORACLE_HOME=/u01/app/oracle/product/19c
export ORACLE_SID=prod
export PATH=$ORACLE_HOME/bin:$PATH
export DATE=$(date +%Y%m%d)
rman target / <<EOF >> /u01/backup/log_${DATE}.log
BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;
CROSSCHECK BACKUP;
DELETE NOPROMPT OBSOLETE;
EOF
14.2 crontab
0 2 * * * /u01/scripts/rman_backup.sh
15. 应用场景
15.1 日常备份
- 全库 + 归档
- 增量
- 自动化
15.2 灾备
- 完全恢复
- 不完全恢复
- 控制文件恢复
15.3 迁移
- 备份传输
- 异机恢复
16. 常见坑与排错
16.1 ORA-19573
- 文件被占用
- 检查状态
16.2 ORA-19809
- FRA 满
- 清理
16.3 备份失败
- 空间
- 权限
- 网络
17. 最佳实践
- 自动化:脚本
- 调度:crontab
- 日志:记录
- 验证:VALIDATE
- 保留策略:合理
- 清理:OBSOLETE
- 压缩:节省
- 加密:安全
- 监控:状态
- 测试:恢复
18. 参考资料
[1] Oracle Database Backup and Recovery Reference 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/rcmrf/