【问题标题】:history of a specific table in oracleoracle中特定表的历史
【发布时间】:2014-01-13 06:42:10
【问题描述】:

我们能否找到特定表的值、更新、删除或插入的历史记录?

我无权创建stored procedure。您能否在答案中向我提供查询或以其他方式查找历史记录?

【问题讨论】:

    标签: sql oracle oracle-sqldeveloper


    【解决方案1】:

    【讨论】:

    • 谢谢你的回复,我已经看到了。使用该表时,除了 SYS 之外,无法找到所有者下的表的更新历史记录。
    【解决方案2】:

    如果 FLASHBACK 已在架构或表上启用,则可能。大多数关键表都可以启用它。请咨询 DBA。如果您有 DBA 访问权限,则在 SQL Developer 中选择表名,按 Shift+F4 并移至 Flashback 选项卡以查找详细信息。

    如果启用,您可以使用以下查询(只是一个示例)

    SELECT * FROM employee AS OF TIMESTAMP 
       TO_TIMESTAMP('2003-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS')
       WHERE name = 'JOHN';
    

    如果未启用,您可能必须在该表上为 evry DMLTRIGGERS。我同意TRIGGERS 永远消失之前的数据历史,除非DBA 能够对重做日志施展魔法......!

    【讨论】:

    【解决方案3】:

    我想到了两种可能性。

    1.) 如果您启用了审核,则一切就绪。但是,我猜如果是这样的话,你就不会问这个问题了。如果您认为此请求会再次出现,您应该调查为将来的请求设置审核。

    2.) 如果没有设置审核,可以使用 LogMiner,它允许您检查存档和在线重做日志的内容。如果您需要插入、更新、删除特定表的详细信息,这可能是您唯一的解决方案。

    希望对您有所帮助。

    【讨论】:

    • 我从来不知道这些!感谢您提供此信息.. +1 .. 但我认为我们需要去 DBA。还是有特权?
    • 是的,如果您不是 DBA,则需要与您的 DBA 合作,以启用审计或使用 logminer。
    猜你喜欢
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 2017-04-13
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    相关资源
    最近更新 更多