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

  1. 充足空间:FRA
  2. ASM:推荐
  3. 监控:使用率
  4. 告警:85%
  5. 定期清理:OBSOLETE
  6. RMAN 策略:保留
  7. Flashback:评估
  8. 多路复用:安全
  9. 容量规划:长期
  10. 文档:配置

15. 参考资料

[1] Oracle Database Administrator’s Guide 19c, “Fast Recovery Area” https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/