暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

合规审计利器|Flashback Query 查不到几天前的数据?因为你少开了这个功能

105

大家好,我是 JiekeXu,江湖人称“强哥”,青学会MOP技术社区主席,荣获Oracle ACE Pro称号,OpenTenBase ACE,金仓社区最具价值倡导者KVA,崖山最具价值专家YVP,IvorySQL开源社区专家顾问委员会成员,KWDB社区MVP,墨天轮MVP,墨天轮连续多年度“墨力之星”,拥有Oracle OCP/OCM认证,MySQL 5.7/8.0 OCP认证以及金仓KCA、KCP、KCM、KCSM证书,TiDB PCTA/PCTP证书、PCA、OBCA、OGCA等众多国产数据库认证证书,专注于数据库技术、系统架构及大数据运维,致力于分享最纯粹、最接地气的 DBA 实战与前沿技术洞察。如果你也对数据技术充满热忱,欢迎关注我的微信公众号“JiekeXu DBA之路”点赞、转发与评论,谢谢!

前 言

上个月底由于某审计要求,需要查看数据库数据的变更历史,包括数据的修改、删除、新增等变化,保存时间为不低于 6 个月,以便追溯数据的变更过程。这样的要求要么专门的数据库审计设备来搞定,要么数据库自身开启审计,保留半年及以上的记录,要是都没有,那就数据库自身来保障了,刚好 Oracle 提供了一种叫 Flashback Data Archive (FDA) 的技术能够满足这样的要求,下面来一起看看学习一下吧。


Oracle 19c Flashback Data Archive (FDA) 闪回数据归档技术介绍

一、技术概述

1.1 什么是 FDA

Flashback Data Archive 是 Oracle 提供的长期数据变更历史保留机制。它自动捕获表的每一行 DML 变更(INSERT/UPDATE/DELETE),存储在专用的归档表空间中,使你可以查询数月甚至数年前的数据状态。

📖 官方文档:Flashback Data Archive — Oracle Database 19c Development Guide

1.2 FDA vs 普通 Flashback Query 的区别

维度 普通 Flashback Query Flashback Data Archive
依赖 UNDO 表空间 专用归档表空间
保留时长 UNDO 保留期内(通常几小时) 自定义,可达数年
UNDO 被覆盖后 ❌ 无法查询 ✅ 仍可查询
数据安全性 UNDO 数据可能被覆盖 ✅ 归档数据受保护,不被覆盖
性能影响 无额外开销 DML 时有额外写入开销(~5%~10%)
存储成本 共享 UNDO 表空间 需要专用表空间
合规审计 不满足长期留存要求 ✅ 满足金融/医疗等合规要求

image.png

1.3 工作原理

            FDA 内部架构
 ┌──────────────────────────────────────────┐
 │              应用层                      │
 │   INSERT / UPDATE / DELETE               │
 └──────────────┬───────────────────────────┘
                │
                ▼
 ┌──────────────────────────────────────────┐
 │            Oracle 数据库                   │
 │                                          │
 │  ┌─────────┐      自动捕获(后台进程)      │
 │  │ 目标表   │ ──────────────────►          │
 │  │(业务表)  │    FBDA 后台进程              │
 │  └─────────┘      异步写入                 │
 │       │                                  │
 │       │           ┌─────────────────────┐ │
 │       │           │   FDA 归档表空间      │ │
 │       │           │                     │ │
 │       │           │  SYS_FBA_HIST_n     │ │ ← 历史版本数据
 │       │           │  SYS_FBA_TCRV_n     │ │ ← 事务上下文
 │       │           │  SYS_FBA_DL_n       │ │ ← 被删除行的记录
 │       │           └─────────────────────┘ │
 └──────────────────────────────────────────┘

核心进程:FBDA(Flashback Data Archive Process)

  • 异步读取 UNDO 数据,将变更写入 FDA 归档表
  • 不阻塞业务 DML 操作
  • 默认每 5 秒采集一次(可调)

1.4 版本特性(19c)

  • 12.2+:FDA 支持对启用 FDA 的表执行 DDL 操作(添加列、修改列类型等),之前版本不允许
  • 19c:支持分区表的 FDA、优化了存储压缩
  • 无需 Advanced Security Option:FDA 是标准企业版功能

二、完整实施方案

2.1 环境检查

-- 1. 确认数据库版本(需 11.2.0.4+,推荐 12.2+) SELECT BANNER_FULL FROM v$version WHERE banner LIKE 'Oracle%'; -- 2. 确认是否为 Enterprise Edition(FDA 需要 EE) SELECT * FROM v$version; -- 3. 检查现有表空间情况 SELECT tablespace_name, bytes/1024/1024 AS size_mb FROM dba_data_files ORDER BY tablespace_name; -- 4. 检查是否有已存在的 Flashback Archive SELECT * FROM dba_flashback_archive; -- 5. 检查是否有已启用 FDA 的表 SELECT * FROM dba_flashback_archive_tables;

2.2 创建 FDA 专用表空间

-- 创建 FDA 表空间(建议单独表空间,与业务数据分离) CREATE TABLESPACE fda_data DATAFILE '+DATA' SIZE 2G AUTOEXTEND ON NEXT 500M MAXSIZE 30G EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO; -- 如需更高安全性,可以创建多个表空间 CREATE TABLESPACE fda_data2 DATAFILE '+DATA' SIZE 2G AUTOEXTEND ON NEXT 500M MAXSIZE 30G;

容量估算参考:

  • 一张日增 10 万行 DML 的表,1 年归档数据约 10GB~30GB(含事务元数据)
  • 建议初始分配 2G,开启 AUTOEXTEND
  • 可在创建 FDA 时设置 QUOTA 限制,防止无限增长

2.3 授权

-- 1. 授予 DBA 管理 FDA 的权限(系统级) GRANT FLASHBACK ARCHIVE ADMINISTER TO DBA; -- 2. 授予用户对具体 FDA 的使用权限 -- (下面创建 FDA 后再执行) -- GRANT FLASHBACK ARCHIVE ON <archive_name> TO <user>;

2.4 创建 Flashback Archive

-- 创建默认 FDA,保留 1 年 CREATE FLASHBACK ARCHIVE DEFAULT fda_1year TABLESPACE fda_data QUOTA 20G -- 限制使用 20GB RETENTION 1 YEAR; -- 数据保留 1 年 -- 创建长期 FDA,保留 5 年(金融合规常见要求) CREATE FLASHBACK ARCHIVE fda_5year TABLESPACE fda_data QUOTA 15G, TABLESPACE fda_data2 QUOTA 15G -- 支持多表空间 RETENTION 5 YEAR; -- 创建短期 FDA,保留 30 天 CREATE FLASHBACK ARCHIVE fda_30day TABLESPACE fda_data QUOTA 2G RETENTION 30 DAY; -- 查看 FDA 列表 SELECT flashback_archive_name, retention_in_days, status, create_time FROM dba_flashback_archive; -- 查看 FDA 表空间 SELECT f.flashback_archive_name, t.tablespace_name, t.quota_in_mb, f.retention_in_days, f.status FROM dba_flashback_archive f JOIN dba_flashback_archive_ts t ON f.flashback_archive_name = t.flashback_archive_name; -- 查看 FDA 表空间使用情况 SELECT df.tablespace_name, fa.flashback_archive_name, fb.retention_in_days, ROUND(SUM(df.bytes) / 1024 / 1024, 2) AS total_mb, ROUND(SUM(df.bytes) / 1024 / 1024 - SUM(NVL(fs.bytes, 0)) / 1024 / 1024, 2) AS used_mb, ROUND(SUM(NVL(fs.bytes, 0)) / 1024 / 1024, 2) AS free_mb, ROUND((1 - SUM(NVL(fs.bytes, 0)) / SUM(df.bytes)) * 100, 2) AS used_pct FROM dba_flashback_archive_ts fa JOIN dba_flashback_archive fb ON fa.flashback_archive_name = fb.flashback_archive_name JOIN dba_data_files df ON fa.tablespace_name = df.tablespace_name LEFT JOIN dba_free_space fs ON df.tablespace_name = fs.tablespace_name GROUP BY df.tablespace_name, fa.flashback_archive_name, fb.retention_in_days ORDER BY used_pct DESC;

📖 官方文档:

2.5 授予用户使用 FDA 的权限

-- 授予业务用户使用指定 FDA 的权限 GRANT FLASHBACK ARCHIVE ON fda_1year TO ccm; GRANT FLASHBACK ARCHIVE ON fda_5year TO ccm; -- 授予查询历史数据的权限 GRANT FLASHBACK ANY TABLE TO ccm;

2.6 为表启用 FDA

-- 方式一:新建表时直接启用 CREATE TABLE ccm.T_LC ( sequence_no VARCHAR2(50) PRIMARY KEY, lc_no VARCHAR2(30), state VARCHAR2(10), sub_state VARCHAR2(10), amount NUMBER(18,2), create_time DATE DEFAULT SYSDATE ) FLASHBACK ARCHIVE fda_1year; -- 启用 FDA,使用 1 年保留策略 -- 方式二:现有表启用 FDA(不停业务,在线操作) ALTER TABLE ccm.T_LC FLASHBACK ARCHIVE fda_1year; --FLASHBACK_ARCHIVE_NAME -- 方式三:启用默认 FDA ALTER TABLE ccm.T_LC FLASHBACK ARCHIVE; -- 使用 DEFAULT FDA -- 方式四:指定长期 FDA ALTER TABLE ccm.T_LC FLASHBACK ARCHIVE fda_5year;

2.7 验证 FDA 已启用

-- 查看哪些表启用了 FDA SELECT owner_name, table_name, flashback_archive_name, archive_table_name, -- 内部归档表名(SYS_FBA_HIST_n) status FROM dba_flashback_archive_tables;

📖 官方文档:DBA_FLASHBACK_ARCHIVE_TABLES — Oracle Database 19c Reference


三、FDA 日常使用

3.1 闪回查询历史数据

-- 查询 6 个月前的数据 SELECT * FROM ccm.T_LC AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '6' MONTH) WHERE sequence_no = '202601001'; -- 查询指定日期的数据 SELECT * FROM ccm.T_LC AS OF TIMESTAMP TO_TIMESTAMP('2026-08-15 10:00:00', 'YYYY-MM-DD HH24:MI:SS'); -- 查询某个 SCN 的数据 SELECT * FROM ccm.T_LC AS OF SCN 5000000; -- VERSIONS BETWEEN:查看某行数据的变更历史 SELECT sequence_no, lc_no, state, sub_state, amount, versions_starttime AS change_time, versions_endtime, versions_operation AS op -- I/U/D FROM ccm.T_LC VERSIONS BETWEEN TIMESTAMP (TO_TIMESTAMP('2026-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')) AND (TO_TIMESTAMP('2026-08-28 00:00:00', 'YYYY-MM-DD HH24:MI:SS')) WHERE sequence_no = '202601001' ORDER BY versions_starttime;

输出示例:

SEQUENCE_NO LC_NO STATE AMOUNT CHANGE_TIME OP
LC202601001 LC001 00 50000 2026-01-05 09:12 I
LC202601001 LC001 01 50000 2026-02-10 14:30 U
LC202601001 LC001 02 48000 2026-06-20 11:05 U
LC202601001 LC001 03 48000 2026-08-28 09:00 U

3.2 统计变更审计

-- 查看某段时间内该表被修改了多少次 SELECT TO_CHAR(versions_starttime, 'YYYY-MM-DD') AS change_date, versions_operation AS op, COUNT(*) AS cnt FROM ccm.T_LC VERSIONS BETWEEN TIMESTAMP (SYSTIMESTAMP - INTERVAL '30' DAY) AND (SYSTIMESTAMP) GROUP BY TO_CHAR(versions_starttime, 'YYYY-MM-DD'), versions_operation ORDER BY change_date; -- 找出谁修改了特定记录(结合 flashback_transaction_query) SELECT xid, operation, undo_sql, commit_timestamp FROM flashback_transaction_query WHERE table_name = 'T_LC' and TABLE_OWNER = 'CCM' AND operation = 'UPDATE' AND start_timestamp > SYSTIMESTAMP - INTERVAL '7' DAY;

3.3 数据恢复

-- 场景:某条记录被误修改,恢复到 2 小时前的值 UPDATE ccm.T_LC l SET (lc_no, state, sub_state, amount) = ( SELECT lc_no, state, sub_state, amount FROM ccm.T_LC AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '2' HOUR) WHERE sequence_no = l.sequence_no ) WHERE l.sequence_no = 20260930; COMMIT; -- 场景:批量恢复被误删的数据 INSERT INTO ccm.T_LC SELECT * FROM ccm.T_LC AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' HOUR) WHERE state = '03' MINUS SELECT * FROM ccm.T_LC WHERE state = '03';

四、FDA 管理操作

4.1 修改 FDA 配置

-- 修改保留期限 ALTER FLASHBACK ARCHIVE fda_1year MODIFY RETENTION 2 YEAR; -- 从 1 年改为 2 年 -- 修改表空间配额 ALTER FLASHBACK ARCHIVE fda_1year MODIFY TABLESPACE fda_data QUOTA 20G; -- 从 10G 改为 20G -- 添加表空间 ALTER FLASHBACK ARCHIVE fda_1year ADD TABLESPACE fda_data2 QUOTA 10G; -- 移除表空间(不会删除已有数据) ALTER FLASHBACK ARCHIVE fda_1year REMOVE TABLESPACE fda_data2;

📖 官方文档:ALTER FLASHBACK ARCHIVE — Oracle Database 19c SQL Language Reference

4.2 清理 FDA 数据

-- 清理指定时间之前的归档数据(比保留期更早地清理) ALTER FLASHBACK ARCHIVE fda_1year PURGE BEFORE TIMESTAMP (TO_TIMESTAMP('2026-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')); -- 清理指定 SCN 之前的数据 ALTER FLASHBACK ARCHIVE fda_1year PURGE BEFORE SCN 5000000; -- 清理所有数据 ALTER FLASHBACK ARCHIVE fda_1year PURGE ALL;

4.3 禁用/移除表的 FDA

-- 禁用表的 FDA(停止继续归档,已归档的历史数据保留) ALTER TABLE ccm.T_LC NO FLASHBACK ARCHIVE; -- 删除 Flashback Archive(需先禁用所有关联的表) DROP FLASHBACK ARCHIVE fda_30day;

📖 官方文档:DROP FLASHBACK ARCHIVE — Oracle Database 19c SQL Language Reference

4.4 对启用 FDA 的表执行 DDL(19c 支持)

-- 19c 支持对 FDA 表执行以下 DDL: ALTER TABLE ccm.T_LC ADD (remark VARCHAR2(200)); ALTER TABLE ccm.T_LC MODIFY (amount NUMBER(20,2)); ALTER TABLE ccm.T_LC DROP COLUMN remark; ALTER TABLE ccm.T_LC RENAME COLUMN state TO lc_state; -- 不支持的 DDL: -- ALTER TABLE ... DROP PRIMARY KEY -- ALTER TABLE ... DROP PARTITION(部分限制) -- TRUNCATE TABLE(会清空归档历史中该表关联的行追踪)

五、监控与运维

5.1 监控 FDA 存储使用

-- 1. FDA 整体空间使用 SELECT df.tablespace_name, fa.flashback_archive_name, fb.retention_in_days, ROUND(SUM(df.bytes) / 1024 / 1024, 2) AS total_mb, ROUND(SUM(df.bytes) / 1024 / 1024 - SUM(NVL(fs.bytes, 0)) / 1024 / 1024, 2) AS used_mb, ROUND(SUM(NVL(fs.bytes, 0)) / 1024 / 1024, 2) AS free_mb, ROUND((1 - SUM(NVL(fs.bytes, 0)) / SUM(df.bytes)) * 100, 2) AS used_pct FROM dba_flashback_archive_ts fa JOIN dba_flashback_archive fb ON fa.flashback_archive_name = fb.flashback_archive_name JOIN dba_data_files df ON fa.tablespace_name = df.tablespace_name LEFT JOIN dba_free_space fs ON df.tablespace_name = fs.tablespace_name GROUP BY df.tablespace_name, fa.flashback_archive_name, fb.retention_in_days ORDER BY used_pct DESC; -- 2. 各表归档数据量 SELECT owner_name, table_name, flashback_archive_name, archive_table_name, status FROM dba_flashback_archive_tables; -- 3. 查看内部归档表大小 SELECT segment_name, tablespace_name, ROUND(bytes / 1024 / 1024, 2) AS size_mb FROM dba_segments WHERE segment_name LIKE 'SYS_FBA%' AND owner = 'SYS' ORDER BY bytes DESC; -- 4. 表空间整体使用率 select count(*) from dba_recyclebin; col TABLESPACE_NAME for a30 set pages 456 SELECT a.tablespace_name,round(total/1024/1024/1024) "Total g", round(free/1024/1024/1024) "Free g",ROUND((total-free)/total,4)*100 "USED%" FROM (SELECT tablespace_name,SUM(bytes) free FROM DBA_FREE_SPACE GROUP BY tablespace_name ) a, (SELECT tablespace_name,SUM(bytes) total FROM DBA_DATA_FILES where tablespace_name LIKE 'FDA%' GROUP BY tablespace_name) b WHERE a.tablespace_name=b.tablespace_name ORDER BY 4;

5.2 监控 FBDA 进程状态

-- 查看 FBDA 后台进程 !ps -ef | grep fbda SELECT pid,spid,program FROM v$process WHERE program LIKE '%FBDA%'; -- 查看 FBDA 进程活动 SELECT sid, serial#, username, program, status, last_call_et FROM v$session WHERE program LIKE '%fbda%'; -- 跟踪 FBDA 活动(调试用) ALTER SESSION SET EVENTS '19500 trace name context forever, level 3';

5.3 FDA 性能优化

-- 1. 调整 FBDA 进程采集频率(默认 5 秒) -- 更大值 = 更低开销,但历史数据延迟更大 ALTER SYSTEM SET "_fbda_process_interval" = 10; -- 10秒 -- 2. 调整 FBDA 进程数(默认 1 个,大负载场景可增加) ALTER SYSTEM SET "_fbda_processes" = 2; -- 3. 优化归档表空间存储 -- 对内部归档表启用压缩(减少存储占用) ALTER TABLE SYS.SYS_FBA_HIST_XXXXX MOVE COMPRESS; -- 4. 为内部归档表创建索引(加速查询) -- 查看归档表名 SELECT archive_table_name FROM dba_flashback_archive_tables WHERE table_name = 'T_LC'; -- 为常用查询字段添加索引 CREATE INDEX SYS.idx_fba_hist_lc_rid ON SYS.SYS_FBA_HIST_XXXXX (RID);

六、生产环境完整部署脚本

以下是一个完整的、可直接执行的部署脚本:

-- ============================================================ -- Oracle 19c Flashback Data Archive 完整部署脚本 -- 业务场景:核心业务表 T_LC 需保留 5 年历史变更 -- ============================================================ -- STEP 1: 创建 FDA 专用表空间 CREATE TABLESPACE fda_data DATAFILE '/u01/oracle/oradata/JiekeXu/fda_data01.dbf' SIZE 2G AUTOEXTEND ON NEXT 500M MAXSIZE 30G EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO; -- STEP 2: 创建 Flashback Archive CREATE FLASHBACK ARCHIVE DEFAULT fda_default TABLESPACE fda_data QUOTA 10G RETENTION 1 YEAR; CREATE FLASHBACK ARCHIVE fda_compliance TABLESPACE fda_data QUOTA 30G RETENTION 5 YEAR; -- STEP 3: 授权 GRANT FLASHBACK ARCHIVE ADMINISTER TO ccm; GRANT FLASHBACK ARCHIVE ON fda_compliance TO ccm; GRANT FLASHBACK ARCHIVE ON fda_default TO ccm; GRANT FLASHBACK ANY TABLE TO ccm; -- STEP 4: 为核心业务表启用 FDA ALTER TABLE ccm.T_LC FLASHBACK ARCHIVE fda_compliance; -- 如有多张表需要启用 -- ALTER TABLE ccm.T_CONTRACT FLASHBACK ARCHIVE fda_compliance; -- ALTER TABLE ccm.T_PAYMENT FLASHBACK ARCHIVE fda_compliance; -- STEP 5: 验证 SELECT owner_name, table_name, flashback_archive_name, archive_table_name, status FROM dba_flashback_archive_tables; -- STEP 6: 测试查询 SELECT * FROM ccm.T_LC AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' DAY) WHERE ROWNUM <= 10;

七、注意事项与常见问题

7.1 限制与约束

限制项 说明
不支持的对象 临时表、外部表、对象表、IOT、物化视图
TRUNCATE TRUNCATE 后归档中的历史追踪断裂,但已归档数据仍可查
DROP TABLE DROP 表不会删除 FDA 归档数据,需手动清理
分区操作 部分分区 DDL 有限制(如 exchange partition)
数据导入 直接路径导入(/*+ APPEND */、impdp)的数据也会被归档
空间 高 DML 频率的表归档数据增长快,需监控空间

7.2 常见问题

Q1:启用 FDA 后 DML 变慢了?

-- 检查 FBDA 进程是否正常 SELECT * FROM v$process WHERE program LIKE '%FBDA%'; -- 检查归档表空间是否已满 SELECT * FROM dba_flashback_archive_ts; -- 如果表空间配额已满,FBDA 会暂停,UNDO 数据堆积 -- 解决:增加配额 ALTER FLASHBACK ARCHIVE fda_compliance MODIFY TABLESPACE fda_data QUOTA 60G;

Q2:闪回查询报 ORA-55612?

-- 原因:FBDA 进程未及时将 UNDO 数据写入归档 -- 解决:等待 FBDA 进程下次采集,或手动触发 -- 检查进程 SELECT pid,spid,program FROM gv$process WHERE program LIKE '%FBDA%'; -- 如果进程不存在,重启数据库会自动启动

Q3:如何估算 FDA 存储需求?

预估公式:
  FDA 存储需求 ≈ 日均 DML 行数 × 平均行大小 × 2(含元数据开销)× 保留天数

示例:
  日均 DML 行数:50,000
  平均行大小:500 字节
  保留 5 年

  50,000 × 500B × 2 × 365 × 5 ≈ 91 GB

Q4:能否对已启用的表修改 FDA 策略?

-- 可以,切换到另一个 FDA ALTER TABLE ccm.T_LC NO FLASHBACK ARCHIVE; ALTER TABLE ccm.T_LC FLASHBACK ARCHIVE fda_5year; -- 注意:切换期间会有短暂的保护空窗期

Q5:如何彻底清除某张表的 FDA 归档数据?

-- 1. 先禁用 FDA ALTER TABLE ccm.T_LC NO FLASHBACK ARCHIVE; -- 2. 找到内部归档表 SELECT archive_table_name FROM dba_flashback_archive_tables WHERE table_name = 'T_LC' and table_owner='CCM'; -- 3. 手动删除内部归档表(需 SYS 用户) -- DROP TABLE SYS.SYS_FBA_HIST_XXXXX PURGE; -- DROP TABLE SYS.SYS_FBA_TCRV_XXXXX PURGE; -- DROP TABLE SYS.SYS_FBA_DL_XXXXX PURGE;

八、与合规场景结合

FDA 在金融行业常见的合规要求中的应用:

合规要求 FDA 对应能力
数据修改留痕 ✅ 自动记录所有 DML 变更
历史数据可追溯 ✅ 支持查询任意时间点的数据状态
数据不可篡改 ✅ 归档数据由 Oracle 内部管理,应用无法直接修改
保留期限合规 ✅ RETENTION 参数精确控制,到期自动清理
审计报表 ✅ VERSIONS BETWEEN 提供完整变更时间线

九、Oracle 19c 官方文档参考链接

SQL 语法参考

语句 链接
CREATE FLASHBACK ARCHIVE Oracle Database 19c SQL Language Reference
ALTER FLASHBACK ARCHIVE Oracle Database 19c SQL Language Reference
DROP FLASHBACK ARCHIVE Oracle Database 19c SQL Language Reference

数据字典视图参考

视图 链接
DBA_FLASHBACK_ARCHIVE Oracle Database 19c Reference
DBA_FLASHBACK_ARCHIVE_TS Oracle Database 19c Reference
DBA_FLASHBACK_ARCHIVE_TABLES Oracle Database 19c Reference
USER_FLASHBACK_ARCHIVE Oracle Database 19c Reference
USER_FLASHBACK_ARCHIVE_TABLES Oracle Database 19c Reference

管理与运维参考

文档 链接
Tablespace 管理 Oracle Database 19c Administrator’s Guide — Managing Tablespaces

总结: FDA 是 Oracle 19c 中实现长期数据审计与合规的核心方案,关键在于合理规划表空间容量、保留期限和监控 FBDA 进程健康状态。对于金融场景的 1 年 3 年 5 年等合规留存,建议初始分配 30G+ 表空间配额,并定期监控空间增长。


如果这篇文章对你有帮助,欢迎点赞、在看、转发三连,转给你团队里里的兄弟。

关注「JiekeXu DBA 之路」,数据库路上不迷路。 我们下篇见。


全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
——————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
ITPUB:https://blog.itpub.net/69968215
腾讯云:https://cloud.tencent.com/developer/user/5645107
——————————————————————————

facebook_pro_light_1920 × 1080  副本.png

最后修改时间:2026-10-08 11:48:42
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论