Oracle Flashback Data Archive 详解
Oracle Flashback Data Archive 详解
适用版本:Oracle Database 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
Flashback Data Archive(FDA)长期跟踪数据变更[1]:
详细见:Oracle Flashback Log 与 Flash Recovery Area。
2. 特性
2.1 跟踪
- 行变更
- 历史
- 长期保留
2.2 透明
- 自动
- 应用无感知
- 查询
2.3 安全
- 防篡改
- 审计
- 合规
3. 配置
3.1 表空间
CREATE TABLESPACE fda_ts
DATAFILE '/u01/oradata/fda01.dbf' SIZE 10G;
3.2 FDA
CREATE FLASHBACK ARCHIVE DEFAULT fda_1y
TABLESPACE fda_ts
RETENTION 1 YEAR;
CREATE FLASHBACK ARCHIVE fda_5y
TABLESPACE fda_ts
RETENTION 5 YEAR;
3.3 授权
GRANT FLASHBACK ARCHIVE ADMINISTER TO scott;
GRANT FLASHBACK ARCHIVE ON fda_1y TO scott;
4. 使用
4.1 启用
ALTER TABLE emp FLASHBACK ARCHIVE fda_1y;
4.2 停止
ALTER TABLE emp NO FLASHBACK ARCHIVE;
4.3 查询
-- 历史查询
SELECT * FROM emp
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' DAY);
-- 时间段
SELECT * FROM emp
VERSIONS BETWEEN TIMESTAMP
(SYSTIMESTAMP - INTERVAL '1' DAY) AND SYSTIMESTAMP;
5. 保留
5.1 保留期
- 1/5/10 年
- 自动清理
- 过期
5.2 调整
ALTER FLASHBACK ARCHIVE fda_1y MODIFY RETENTION 2 YEAR;
5.3 空间
ALTER FLASHBACK ARCHIVE fda_1y
MODIFY TABLESPACE fda_ts QUOTA 5G;
6. 管理
6.1 清理
-- 手动清理
ALTER FLASHBACK ARCHIVE fda_1y PURGE ALL;
ALTER FLASHBACK ARCHIVE fda_1y PURGE BEFORE TIMESTAMP ...;
6.2 表空间
ALTER FLASHBACK ARCHIVE fda_1y
ADD TABLESPACE fda_ts2;
7. 查看
7.1 视图
SELECT * FROM dba_flashback_archive;
SELECT * FROM dba_flashback_archive_tables;
SELECT * FROM dba_flashback_archive_ts;
7.2 历史
SELECT * FROM sys_fba_hist_12345;
SELECT * FROM sys_fba_track_12345;
8. 原理
8.1 触发器
- 自动触发器
- 捕获变更
- 存储
8.2 历史表
- SYS_FBA_HIST_...
- 历史数据
- 查询
8.3 事务
- 事务上下文
- 元数据
- 完整
9. 应用场景
9.1 审计
- 数据变更
- 历史
- 合规
9.2 报表
- 历史报表
- 时间点
- 查询
9.3 恢复
- 误操作
- 历史数据
- 恢复
10. 性能
10.1 优势
- 透明
- 长期
- 查询
10.2 开销
- DML 开销
- 存储
- 监控
10.3 优化
- 选择表
- 保留期
- 监控
11. 监控
11.1 使用
SELECT table_name, flashback_archive_name, archive_table_name
FROM dba_flashback_archive_tables;
11.2 空间
SELECT flashback_archive_name, tablespace_name, quota_in_mb
FROM dba_flashback_archive_ts;
12. 常见问题
12.1 ORA-55602
- 表已启用
- 检查
12.2 空间
- 表空间满
- 增加
- 清理
12.3 性能
- DML 慢
- 评估
- 监控
13. 最佳实践
- 关键表:启用
- 保留期:合理
- 表空间:专用
- 监控:空间
- 清理:过期
- 审计:查询
- 测试:性能
- 文档:配置
- 演练:定期
- 合规:审计
14. 参考资料
[1] Oracle Database Administrator’s Guide 19c, “Flashback Data Archive” https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/