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;

详细见:Oracle 数据库 PITR 时间点恢复


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. 最佳实践

  1. 自动化:脚本
  2. 调度:crontab
  3. 日志:记录
  4. 验证:VALIDATE
  5. 保留策略:合理
  6. 清理:OBSOLETE
  7. 压缩:节省
  8. 加密:安全
  9. 监控:状态
  10. 测试:恢复

18. 参考资料

[1] Oracle Database Backup and Recovery Reference 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/rcmrf/