Oracle 备份恢复规划
Oracle 备份恢复规划
适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
备份恢复规划是数据保护基础[1]:
详细见:Oracle 备份策略与最佳实践。
2. RPO / RTO
2.1 RPO(Recovery Point Objective)
- 数据丢失容忍
- 业务关键:0
- 一般:1 小时
- 历史:1 天
2.2 RTO(Recovery Time Objective)
- 恢复时间目标
- 业务关键:分钟
- 一般:1 小时
- 历史:1 天
2.3 业务分级
| 等级 | RPO | RTO | 备份 |
|---|---|---|---|
| 关键 | 0 | 分钟 | RAC + DG + RMAN |
| 重要 | 1 小时 | 1 小时 | RAC + RMAN |
| 一般 | 1 天 | 4 小时 | RMAN |
| 历史 | 1 周 | 1 天 | Data Pump |
3. 备份类型
3.1 物理
- RMAN
- 数据块级别
- 完整
3.2 逻辑
- Data Pump
- 表/行级别
- 灵活
3.3 增量
- RMAN Incremental
- Block Change Tracking
- 快
3.4 在线
- 数据库运行
- 归档日志
- 一致
4. RMAN 配置
4.1 持久化
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u01/backup/%U';
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/backup/%F';
RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;
RMAN> CONFIGURE COMPRESSION ALGORITHM 'HIGH';
4.2 备份策略
-- 全量(每周日)
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
-- 增量(每天)
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;
-- 增量更新
RMAN> BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update' DATABASE;
RMAN> RECOVER COPY OF DATABASE WITH TAG 'incr_update';
详细见:Oracle RMAN 增量备份策略。
4.3 验证
RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE;
RMAN> RESTORE DATABASE VALIDATE;
5. 归档
5.1 启用
ARCHIVE LOG LIST;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
5.2 目的地
ALTER SYSTEM SET log_archive_dest_1 = 'location=use_db_recovery_file_dest';
ALTER SYSTEM SET log_archive_dest_2 = 'location=/u02/archive';
5.3 FRA
ALTER SYSTEM SET db_recovery_file_dest = '/u01/app/oracle/fast_recovery_area';
ALTER SYSTEM SET db_recovery_file_dest_size = 100G;
详细见:Oracle 归档日志管理详解。
6. 备份脚本
6.1 全量
#!/bin/bash
# full_backup.sh
source /home/oracle/.bash_profile
rman target / << EOF
CROSSCHECK BACKUP;
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED BACKUP;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;
BACKUP CURRENT CONTROLFILE;
BACKUP SPFILE;
DELETE NOPROMPT OBSOLETE;
EOF
6.2 增量
#!/bin/bash
# incr_backup.sh
source /home/oracle/.bash_profile
rman target / << EOF
BACKUP INCREMENTAL LEVEL 1 DATABASE PLUS ARCHIVELOG DELETE INPUT;
BACKUP CURRENT CONTROLFILE;
BACKUP SPFILE;
DELETE NOPROMPT OBSOLETE;
EOF
6.3 cron
# 周日 2:00 全量
0 2 * * 0 /home/oracle/scripts/full_backup.sh >> /home/oracle/logs/full.log 2>&1
# 周一-六 2:00 增量
0 2 * * 1-6 /home/oracle/scripts/incr_backup.sh >> /home/oracle/logs/incr.log 2>&1
7. 备份目的地
7.1 本地
- /u01/backup
- 快速恢复
7.2 远程
- NFS / SMB
- 跨服务器
- 灾备
7.3 云
- OCI Object Storage
- S3
- Azure Blob
7.4 磁带
- SBT
- MML
- 长期
8. 恢复
8.1 完全恢复
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN;
8.2 不完全恢复
RMAN> RUN {
SET UNTIL TIME "TO_DATE('2026-07-21 15:00:00', 'YYYY-MM-DD HH24:MI:SS')";
RESTORE DATABASE;
RECOVER DATABASE;
}
RMAN> ALTER DATABASE OPEN RESETLOGS;
8.3 表级
RMAN> RECOVER TABLE scott.employees
UNTIL TIME "SYSDATE-1"
AUXILIARY DESTINATION '/u01/aux';
详细见:Oracle 恢复实战案例。
9. 灾备
9.1 Data Guard
- 主备同步
- 零数据丢失
- Switchover / Failover
9.2 备份异地
- 备份传输到异地
- 跨机房
- 跨城市
9.3 演练
- 定期演练
- 流程验证
- 团队能力
10. 监控
10.1 备份状态
SELECT session_key, input_type, status,
TO_CHAR(start_time, 'YYYY-MM-DD HH24:MI') AS start_time,
elapsed_seconds/60 AS minutes,
output_bytes/1024/1024/1024 AS gb
FROM v$rman_backup_job_details
ORDER BY start_time DESC FETCH FIRST 10 ROWS ONLY;
10.2 失败
SELECT session_key, status, output_bytes, errors
FROM v$rman_backup_job_details
WHERE status != 'COMPLETED';
10.3 FRA
SELECT name,
space_limit/1024/1024/1024 AS limit_gb,
space_used/1024/1024/1024 AS used_gb
FROM v$recovery_file_dest;
11. 验证
11.1 备份验证
RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE;
RMAN> RESTORE DATABASE VALIDATE;
11.2 恢复测试
- 测试环境
- 完整恢复
- 业务验证
11.3 数据完整性
-- 行数
SELECT 'EMPLOYEES', COUNT(*) FROM employees;
-- 校验和
SELECT SUM(DBMS_CRYPTO.HASH(utl_raw.cast_to_raw(...), 4)) FROM ...
12. 安全
12.1 加密
RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;
RMAN> CONFIGURE ENCRYPTION ALGORITHM 'AES256';
RMAN> SET ENCRYPTION ON IDENTIFIED BY ****** ONLY;
12.2 TDE
ALTER SYSTEM SET encryption key IDENTIFIED BY ******
详细见:Oracle 安全深度解析。
12.3 访问
- 备份目录权限
- 加密
- 异地
13. 常见坑与排错
13.1 ORA-19809
- FRA 满
- 清理
- 增大
13.2 ORA-00257
- 归档满
- 清理
- 增大
13.3 备份失败
- 日志
- 空间
- 网络
14. 最佳实践
- RPO/RTO 明确:业务
- 归档模式:生产
- RMAN 持久化:标准化
- 增量 + 全量:性能
- 多目的地:冗余
- 异地备份:灾备
- 加密:安全
- 定期验证:可靠
- 演练:能力
- 监控告警:及时
15. 参考资料
[1] Oracle Database Backup and Recovery User’s Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/