【问题标题】:Oracle flashback: Is there a way to get the REDO SQL queries?Oracle 闪回:有没有办法获取 REDO SQL 查询?
【发布时间】:2013-05-22 16:05:27
【问题描述】:

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

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

【问题讨论】:

    标签: sql oracle oracle11g undo-redo flashback


    【解决方案1】:

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

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

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

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

    更新

    抱歉最初的错误,审查审计记录的视图的真实名称是DBA_AUDIT_TRAIL(以上更正)。

    这个视图可以在TRANSACTIONID字段和FLASHBACK_TRANSACTION_QUERY视图的XID字段连接,得到对应的闪回记录。

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

    【讨论】:

    • 是否可以只检查已提交的语句(使用 oracle AUDIT 功能)?
    • @MRalwasser 对不起,错误,请查看更新的答案。但是仍然存在一个限制:您无法确定事务中导致数据更改的确切语句。
    猜你喜欢
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 2021-04-21
    • 2020-08-06
    • 2011-03-04
    • 1970-01-01
    相关资源
    最近更新 更多