论坛首页 综合技术论坛

从linux的pid到oracle的SQL

浏览 4830 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-08  
从linux的pid查询oracle执行语句的方法,我们先学习几个比较关键的V$视图。
V$process
         从linux中查询到的pid在V$process这个视图中,相对应的字段为spid,举例如下:在linux中,执行top命令,会显示出每个进程在linux中的pid,所属用户,运行的时间以及占用cpu的比率等,我们主要关注的是占用cpu较高的进程,我们记录pid号,查询语句为select spid,addr from v$process where spid = &pid(注:&pid为在top下的pid)。里面有很多的列,我们现在只需要两个字段就可以了,addr与V$session中的paddr关联。我们取得它是为了得到V$session的相关数据。
V$session
在上面的sql语句得到的addr,经过下面的查询select sql_address from V$session where paddr=&addr,就可以得到sqlarea中的address。
V$sqlarea
sql_address就是在视图V$sqlarea中对应的字段address。

经过上面的,我们可以得到一个语句

SELECT sqlarea.SQL_TEXT
FROM V$session sess,V$process pro,V$sqlarea sqlarea
WHERE pro.sPID=&pid
AND sess.PADDR = pro.ADDR
AND sess.SQL_ADDRESS = sqlarea.ADDRESS
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics