今天,我的系统中有人更新了意外的声明。所以这使我的系统运行不正确。现在,我想看看是谁(或哪个会话)做了它。我可以在 AWR 报告中找到它吗?如果我能在 AWR 报告中找到它,它特别在哪里?非常感谢 !
问问题
280 次
1 回答
1
更改可能来自许多来源,具体取决于更改方式。只有最后一个选项 Log Miner 会为您提供您想要的一切。但这也需要最大的努力。一些消息来源不会告诉您会话,但也许仅仅查看相关的 SQL 就足以弄清楚是谁做的。
- V$SQL - 所有的 SQL 语句都在里面,但是它们在共享池中过期了,所以你需要快速搜索。如果他们使用了一个独特的查询,您可以使用类似
select * from v$sql where lower(sql_text) like '%table_name%';
. - AWR - 您可能可以在 中找到 SQL
select * from dba_hist_sqltext where lower(sql_text) like '%table_name%';
,然后如果幸运的话,您可以从 中找到一些会话信息select * from dba_hist_active_sess_history where sql_id = '<sql id>';
。Active Session History 仅对活动进行采样,如果查询运行得非常快,则很有可能不会出现在其中。 - 闪回查询- 如果你幸运的话,UNDO 仍然存在,你可以确切地看到它是如何从闪回查询中改变的。这可能会给你准确的时间,以及发生了什么变化。
select VERSIONS_STARTSCN, VERSIONS_STARTTIME, VERSIONS_ENDSCN, VERSIONS_ENDTIME, VERSIONS_XID, VERSIONS_OPERATION, your_table.* from your_table versions between scn minvalue and maxvalue;
- Log Miner - 我没用过这个,但据说它是完成这项工作的完美工具。在文档中阅读有关它的更多信息。
于 2014-03-07T06:41:00.503 回答