最近,我们的一个网站报道了一个非常奇怪的情况。 根据我们的字段,我们发现应该有一些必须在该场景中发生的删除
在我们的应用程序代码中,该表本身没有删除。所以我们检查了gv $ sqlarea(因为我们使用RAC)表是否有这个表的任何删除sql。我们一无所获。
然后我们尝试通过PL / SQL Developer进行相同类型的删除。我们可以通过gv $ sqlarea或gv $ session跟踪所有删除。但是当我们在plsql developer中使用下面的查询,锁定,编辑和提交时,没有跟踪
select t.*, t.rowid
from <table>
我们能找到的东西是sys.mon_mods $有删除次数。但它不会存储很长时间,因此我们可以按时间戳跟踪
任何人都可以帮我解决这个问题
Oracle版本:11.1.0.7.0
类型:RAC(5个实例)
答案 0 :(得分:2)
gv$sqlarea
只显示共享池中的SQL语句。如果语句仅执行一次,则根据共享池的大小和执行的SQL语句的数量,语句可能不会在共享池中很长时间。我当然不希望在几个小时之后,一次性声明仍然会在一个相当活跃的系统的共享池中。
假设您没有启用审核并且没有记录删除的触发器,系统是否处于ARCHIVELOG
模式?您是否从删除行的时间点获得了存档日志?如果是这样,您可以使用LogMiner查看存档日志以查找相关语句。