最近遇到需要确定某个表中的错误记录是由哪个应用程序插入的问题,如果能确定是哪个应用程序插入的记录,可以进一步排查该程序为什么插入该记录,做到有的放矢,有针对性地排查该程序,落实责任到程序维护人员,而不是盲目地逐个应用程序去排查,提高效率。这种情况可以通过检索oracle系统视图 v$SQL来确定。
SQL语句如下:
select SQL_TEXT, service,module,LAST_ACTIVE_TIME,LAST_LOAD_TIME from v$SQL t where t.SERVICe = '数据库服务名'
and t.LAST_ACTIVE_TIME > to_date('2013-03-11 17:20:42','yyyy-mm-dd hh24:mi:ss') order by t.LAST_ACTIVE_TIME desc
下面说说v$SQL视图的应用过程。v$SQL表有数十个字段。针对上面的问题,我们只需关注SQL_TEXT, service,module,LAST_ACTIVE_TIME,LAST_LOAD_TIME这几个字段即可。
SQL_TEXT:执行的SQL语句
service:数据库服务名
module:应用程序名称。比如 pl/sql developer.exe。很重要的字段
LAST_ACTIVE_TIME:表示SQL最后的执行时间
LAST_LOAD_TIME:表示SQL执行计划被载入library cache的时间,一般是SQL第一次运行的时间
v$SQL还有许许多多的作用,继续探索,也期待大家的分享!