Oracle 数据库闪回恢复区详解
Oracle 数据库闪回恢复区详解
适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
闪回恢复区(Fast Recovery Area, FRA)集中管理恢复文件[1]:
详细见:Oracle 归档日志管理与 FRA 空间、Oracle 备份策略与最佳实践。
2. FRA 内容
2.1 文件类型
- 归档日志
- RMAN 备份
- 控制文件自动备份
- Flashback 日志
- 控制文件副本
- 数据文件副本
2.2 优势
- 集中管理
- 自动清理
- 空间管理
- 简化
3. 配置
3.1 设置
ALTER SYSTEM SET db_recovery_file_dest = '/u01/fra' SCOPE=BOTH;
ALTER SYSTEM SET db_recovery_file_dest_size = 50G SCOPE=BOTH;
3.2 查看
SHOW PARAMETER db_recovery_file;
SELECT name, space_limit, space_used, space_reclaimable, number_of_files
FROM v$recovery_file_dest;
3.3 取消
ALTER SYSTEM SET db_recovery_file_dest = '' SCOPE=BOTH;
4. 空间管理
4.1 使用
SELECT file_type,
percent_space_used,
percent_space_reclaimable,
number_of_files
FROM v$flash_recovery_area_usage;
4.2 类型
- CONTROL FILE
- ONLINELOG
- ARCHIVELOG
- BACKUP PIECE
- IMAGE COPY
- FLASHBACK LOG
- FOREIGN ARCHIVE LOG
4.3 自动清理
- 空间不足时
- 删除 OBSOLETE
- 删除 EXPIRED
- 按策略
5. 监控
5.1 空间
SELECT name,
ROUND(space_limit/1024/1024/1024, 2) AS limit_gb,
ROUND(space_used/1024/1024/1024, 2) AS used_gb,
ROUND(space_reclaimable/1024/1024/1024, 2) AS reclaimable_gb
FROM v$recovery_file_dest;
5.2 详细
SELECT file_type,
ROUND(percent_space_used, 2) AS pct_used,
ROUND(percent_space_reclaimable, 2) AS pct_reclaim,
number_of_files
FROM v$flash_recovery_area_usage
ORDER BY percent_space_used DESC;
5.3 告警
- 85%:警告
- 97%:严重
- ORA-19809:满
6. 空间不足
6.1 ORA-19809
- FRA 满
- 处理
6.2 处理步骤
# 1. 检查
SELECT * FROM v$flash_recovery_area_usage;
# 2. 交叉检查
RMAN> CROSSCHECK BACKUP;
RMAN> CROSSCHECK ARCHIVELOG ALL;
# 3. 删除过期
RMAN> DELETE NOPROMPT EXPIRED BACKUP;
RMAN> DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
# 4. 删除过时
RMAN> DELETE NOPROMPT OBSOLETE;
# 5. 删除旧归档
RMAN> DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-7';
6.3 增大 FRA
ALTER SYSTEM SET db_recovery_file_dest_size = 100G;
7. RMAN 配置
7.1 默认位置
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '+FRA';
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F';
7.2 归档到 FRA
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST';
7.3 备份到 FRA
RMAN> BACKUP DATABASE FORMAT '+FRA';
8. Flashback 日志
8.1 启用 Flashback
ALTER DATABASE FLASHBACK ON;
8.2 保留
ALTER SYSTEM SET db_flashback_retention_target = 1440; -- 分钟
8.3 占用 FRA
- Flashback 日志占用 FRA
- 监控
详细见:Oracle Flashback Database 详解。
9. 多路复用
9.1 Online Redo
ALTER DATABASE ADD LOGFILE MEMBER '+FRA' TO GROUP 1;
9.2 控制文件
ALTER SYSTEM SET control_files = '+DATA/prod/control01.ctl', '+FRA/prod/control02.ctl' SCOPE=SPFILE;
10. ASM
10.1 FRA 在 ASM
- 推荐使用 ASM
- +FRA 磁盘组
- 高可用
10.2 配置
ALTER SYSTEM SET db_recovery_file_dest = '+FRA';
11. 最佳大小
11.1 估算
- 归档日志:每日生成 × 保留天数
- RMAN 备份:全备 + 增量
- Flashback:保留时间
- 冗余
11.2 公式
FRA = (归档每日 × 保留) + (全备大小 × 冗余) + (增量 × 保留) + Flashback
11.3 监控调整
- 监控使用
- 定期调整
- 容量规划
12. 应用场景
12.1 生产
- FRA 充足
- 集中管理
- 自动化
12.2 Data Guard
- Standby 也配置 FRA
- 归档
- 备份
12.3 RAC
- 共享 FRA(ASM)
- 所有节点访问
13. 常见坑与排错
13.1 ORA-19809
- FRA 满
- 清理或增大
13.2 ORA-19815
- 接近满
- 警告
13.3 ORA-00257
- 归档满
- 清理归档
13.4 性能
- FRA I/O
- ASM 优化
- 独立磁盘
14. 最佳实践
- 充足空间:FRA
- ASM:推荐
- 监控:使用率
- 告警:85%
- 定期清理:OBSOLETE
- RMAN 策略:保留
- Flashback:评估
- 多路复用:安全
- 容量规划:长期
- 文档:配置
15. 参考资料
[1] Oracle Database Administrator’s Guide 19c, “Fast Recovery Area” https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/