从一条语句看V$SQLAREA 与V$SESSION的关系SELECT L.SQL_TEXT, S.*
FROM V$SQLAREA L, V$SESSION S 
WHERE UPPER(L.SQL_TEXT) LIKE 'UPDATE%'
       AND S.SQL_ADDRESS = L.ADDRESS;
 
理论上讲S.SQL_ADDRESS = L.ADDRESS这个关联关系没有错,可就是为什么没有SELECT出数据?
 

解决方案 »

  1.   

          select a.* from V$SQLTEXT a,v$sqlarea b where a.address=b.address
      

  2.   

    GG, 我要查是哪个SESSION做的: select a.* from V$SQLTEXT a,v$sqlarea b where a.address=b.address, 这样关联有什么意义?
      

  3.   

    哈哈,理解出错,
    你上面的SQL语句,就表明说没有UPDATE的语句,
    测试可以先将 UPPER(L.SQL_TEXT) LIKE 'UPDATE%' 删除,在看看结果!
      

  4.   

    Cosio, V$SQLAREA里有很多条update语句用address是一个实际的字符串,但是在V$SESSION对应的session却是INACTIVE, SQL_ADDRESS变成了00。
    我的问题是:如何能实时的获取到update语句相应的SESSION?
      

  5.   

    session中多为会话信息,sqlarea中多为sql语句信息,
    它们通过V$SESSION.SQL_ADDRESS = V$SQLAREA.ADDRESS来关联。不过,V$SESSION.SQL_ADDRESS 的一串数字是否可以转化为IP地址,可能还要查一些资料。
      

  6.   

    select a.sid,a.serial#,a.username 用户名,a.machine 机器名,a.program 应用程序,b.sql_text 执行的SQL
    from sys.v_$session a,sys.v_$sql b
    where a.sql_address = b.address;
      

  7.   

     SQL_ADDRESS 如何变成 00 的 。 求解释啊 gg