Oracle闪回:有没有办法获得REDO SQL查询?

时间:2013-05-22 16:05:28

标签: sql oracle oracle11g undo-redo flashback

oracle数据库11g 中,表FLASHBACK_TRANSACTION_QUERY提供了UNDO_SQL列,SQL反转了先前执行的特定查询所做的修改。

但是,我需要REDO_SQL(已执行的原始SQL)。 有没有办法(使用SQL)从 oracle flashback 区域中提取REDO_SQL信息?

1 个答案:

答案 0 :(得分:1)

正如您在documentation中所看到的,Oracle闪回功能专注于数据而非SQL语句。因此,您无法从闪回数据中发现语句。

相反,您可以在数据库设置(AUDIT_TRAIL参数)中启用 AUDIT 功能,然后使用here所述的AUDIT语句管理审核设置。

可以使用DBA_AUDIT_TRAILUSER_AUDIT_TRAIL个视图访问记录的语句。

达到相同目标的另一种方法是使用DBMS_FGA包调整审核策略,然后引用DBA_FGA_AUDIT_TRAILV$XML_AUDIT_TRAIL以获取已执行语句的列表。此选项涉及Fine Grained Auditing功能,仅适用于企业版Oracle数据库。

<强>更新

对于初始错误,我们很抱歉,检查审核记录的真实姓名是DBA_AUDIT_TRAIL(已在上面更正)。

此视图可以在TRANSACTIONID字段与XID视图的字段FLASHBACK_TRANSACTION_QUERY相结合,以获取相应的闪回记录。

除了Oracle文档之外,还有一些关于审计的好articles on Oracle-Base site