日期:2014-05-17  浏览次数:20705 次

求各路高手帮忙关于v$sql的问题
我在其中查到一个语句我想定位它是从程序什么位置发出的应该怎么做,程序是跑在websphere上的

------解决方案--------------------
关联V$SESSION即可
select b.sql_text,sid,serial#,username,program,to_char(logon_time,'yyyy-mm-dd hh24:mi:ss') as login_time
from v$session a,v$sqlarea b where b.address=DECODE(a.sql_hash_value, 0, a.prev_sql_addr, a.sql_address)
AND UPPER(SQL_TEXT) LIKE '%GIS%' ;
------解决方案--------------------
先执行下面的sql语句,把你想要查的sql的进程号取出来:
select sql.sql_text, gs.process from v$sql sql, v$session se, SYS.GV_$SESSION gs
where sql.address = se.sql_address
and gs.paddr = se.paddr

gs.process就是跑在数据库服务器上的进程号。

到数据库主机上执行:
ps -ef |grep gs.process
就可以看到是哪个程序执行的这个process了。