一、核心概念
功能定位
Flashback Archive(FBDA)是Oracle 11g引入的特性,用于长期存储表的历史变化数据,支持基于时间点或SCN的历史查询,满足审计、合规性需求。
与归档日志的区别:归档日志记录Redo日志用于灾难恢复,而FBDA存储UNDO数据用于历史追溯。
别称:Oracle Total Recall(全面回忆),强调其完整回溯能力。
核心机制
后台进程FBDA:异步捕获表数据变更,将历史数据写入专用归档表(如SYS_FBA_HIST_xxx)。
独立存储:数据保存在用户创建的表空间中,与UNDO表空间分离,避免UNDO覆盖导致历史丢失。
压缩与分区:历史数据自动压缩并分区存储,减少空间占用。
二、工作机制
数据捕获流程
当启用FBDA的表发生DML操作时,FBDA进程从数据库缓冲区或UNDO表空间提取变更前的数据。
数据经整理后写入历史表,保留原始行结构(不含索引)。
保留策略
可创建多个FBDA区域,每个关联独立表空间并设置保留期限(如1天、1年甚至20年)。
到期数据自动清理,避免手动维护。
多策略配置示例:
| FBDA名称 | 表空间 | 保留期限 | 适用场景 |
|--------------|--------|----------|----------|
| FBDA_SHORT | TS_90D | 90天 | 短期审计 |
| FBDA_LEGAL | TS_20Y | 20年 | 法律合规 |
二、测试:
1 創建 flashback archive 所需表空間
create tablespace tbs1 datafile size 100M autoextend on;
2 創建flashback archive
create flashback archive fla1 tablespace tbs1 retention 2 year;
3 将 Flashback Archive 对象对 Flashback 数据存档 (fla1) 的权限授予存档用户 (zc)。
grant flashback archive on fla1 to ZC;
4 將某張表打開歸檔保存
alter table ttt flashback archive fla1;
5 查看当前时间
select to_timestamp(sysdate) from dual;
SQL> select to_timestamp(sysdate) from dual;
TO_TIMESTAMP(SYSDATE)
---------------------------------------------------------------------------
09-JUN-25 12.00.00 AM
6 查看历史数据
select object_id,DATA_OBJECT_ID from ttt where OBJECT_ID=7788;
update ttt set DATA_OBJECT_ID=DATA_OBJECT_ID+100 where OBJECT_ID=7788;
1 row updated.
-- 查询1小时内所有数据版本
SQL> SELECT versions_xid, versions_operation, DATA_OBJECT_ID FROM ttt VERSIONS BETWEEN TIMESTAMP SYSTIMESTAMP - INTERVAL '2' HOUR AND SYSTIMESTAMP where OBJECT_ID=7788 ;
0B00150050110000 U
0A001000DA270000 U 7888
7 回退:
alter table ttt no flashback archive ;
SQL> select DATA_OBJECT_ID from ttt as of timestamp to_timestamp('2025-06-12 09:11:55','yyyy-mm-dd hh24:mi:ss') where OBJECT_ID=7788;
DATA_OBJECT_ID
--------------
SQL> select DATA_OBJECT_ID from ttt as of timestamp to_timestamp('2025-06-12 09:12:25','yyyy-mm-dd hh24:mi:ss') where OBJECT_ID=7788;
DATA_OBJECT_ID
--------------
7888
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




