我在其中查到一个语句我想定位它是从程序什么位置发出的应该怎么做,程序是跑在websphere上的

解决方案 »

  1.   

    关联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%' ;
      

  2.   

    先执行下面的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.paddrgs.process就是跑在数据库服务器上的进程号。到数据库主机上执行:
    ps -ef |grep gs.process
    就可以看到是哪个程序执行的这个process了。
      

  3.   

    不过,你用的WEBLOGIC中间件,这个就比较困难了,V$SESSION里一般都是WEBLOGIC的程序名称了,你要查到远端用户和程序的话,可能要再WEBLOGIC上做些操作了,例如获取中间件的用户和会话信息了
    在根据中间件的日志或者链接信息来确定用户会话了