如何正确使用 Oracle Flashback 来审计包含用户信息的表更改?
Posted
技术标签:
【中文标题】如何正确使用 Oracle Flashback 来审计包含用户信息的表更改?【英文标题】:How do I properly use Oracle Flashback to audit table changes with user information? 【发布时间】:2021-09-07 05:49:33 【问题描述】:我的组织已选择使用 Oracle 闪回来替换手动创建的审计表。但是,DBA 将TUNED_AUTORETENTION
值和UNDO_RETENTION
设置为仅14400 秒。不幸的是,我们必须将这些数据的审计值保留 7 年。有没有办法查询“过期”版本数据,以便可以按时间跨度审核特定更改,或者是否需要将 UNDO_RETENTION
和单个 TUNED_AUTORETENTION
值设置为 220800000?我查看了flashback_transaction_query
,但它只显示交易一般数据,而不是更改了哪些列值。
相关数据库当前已将其表空间文件设置为在逻辑驱动器上自动分配更多物理层空间。
【问题讨论】:
【参考方案1】:为此,您应该使用 Flashback Data Archive,而不是基本的 Flashback。您提到的参数仅适用于基本的闪回。
闪回数据存档提供跟踪和存储的能力 表在其生命周期内的事务性更改。闪回数据 存档对于遵守记录阶段策略和审计很有用 报告。
请看这里:https://docs.oracle.com/en/database/oracle/oracle-database/19/adfns/flashback.html#GUID-06AA782A-3F79-4235-86D5-2D136485F093
【讨论】:
闪回数据存档是我的部门打算使用的。但是,在执行查询时,XID 并未保留在 VERSIONS_XID 列中,并且似乎其他版本和事务数据也丢失了。我们可以看到表格值,但看不到它们何时更改或谁更改了它们。 您使用什么查询来查看存档版本?以及采取了哪些步骤来在您的表上启用存档? 不幸的是,启用的最终脚本由异地主机处理,启用请求经过了几层管理和批准,所以我不能 100% 确定。我们运行启用的代码就是 ALTER TABLE Billing.INVOICE_PRICE FLASHBACK ARCHIVE FIN_AUDIT_7Y; .这就是我们发现没有 XID 的原因: SELECT billing.INVOICE_PRICE.* , NVL(VERSIONS_STARTTIME, '') CHANGE_DATE , NVL(VERSIONS_OPERATION, 'I') OPERATION , VERSIONS_XID FROM billing.INVOICE_PRICE VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE 嗯。听起来有些不对劲,但这可能需要 Oracle 支持部门的帮助才能解决。应填充 VERSION_XID。 如果表空间数据文件没有使用 AUTOEXTEND ON NEXT nG 设置,这些保留变量会起作用吗? ?以上是关于如何正确使用 Oracle Flashback 来审计包含用户信息的表更改?的主要内容,如果未能解决你的问题,请参考以下文章
3.Oracle 闪回特性(Flashback QueryFlashback Table)
Oracle中,如何查看FRA(Flashback Recovery Area)的利用率