在 oracle数据库11g 中,表FLASHBACK_TRANSACTION_QUERY
提供了UNDO_SQL
列,SQL反转了先前执行的特定查询所做的修改。
但是,我需要REDO_SQL
(已执行的原始SQL
)。
有没有办法(使用SQL)从 oracle flashback 区域中提取REDO_SQL
信息?
答案 0 :(得分:1)
正如您在documentation中所看到的,Oracle闪回功能专注于数据而非SQL语句。因此,您无法从闪回数据中发现语句。
相反,您可以在数据库设置(AUDIT_TRAIL参数)中启用 AUDIT 功能,然后使用here所述的AUDIT
语句管理审核设置。
可以使用DBA_AUDIT_TRAIL
或USER_AUDIT_TRAIL
个视图访问记录的语句。
达到相同目标的另一种方法是使用DBMS_FGA
包调整审核策略,然后引用DBA_FGA_AUDIT_TRAIL
或V$XML_AUDIT_TRAIL
以获取已执行语句的列表。此选项涉及Fine Grained Auditing功能,仅适用于企业版Oracle数据库。
<强>更新强>
对于初始错误,我们很抱歉,检查审核记录的真实姓名是DBA_AUDIT_TRAIL
(已在上面更正)。
此视图可以在TRANSACTIONID
字段与XID
视图的字段FLASHBACK_TRANSACTION_QUERY
相结合,以获取相应的闪回记录。
除了Oracle文档之外,还有一些关于审计的好articles on Oracle-Base site。