Oracle服务器定位CPU使用率高的瓶颈(SQL)

1.首先用TOP命令监控系统资源,如果是AIX系统,就用topas,进入TOP命令的滚动刷新数据时,发现userCPU高达98%!!

保持top的状态下,按shift+p,可以将所有进程按CPU使用率高低排序,这样可以了解消耗CPU最多的进程是哪些

 

2 现在v$process 视图中找到pid对应的地址addr,将进程号pid和oracle的session联系起来

 

SQL:select addr from v$process where spid=172928;

 

简介:v$process视图包含当前系统oracle运行的所有进程信息。常被用于将oracle或服务进程的操作系统进程ID与数据库session之间建立联系。也就是可以通过进程PID来寻找数据库的session)

 

再通过刚才的addr,在v$session表找到对应的sql_id

SQL:select sql_id from v$session where paddr='00000003CEA444C8';

再通过sql_id可以找到对应的SQL是哪条

SQL:select * from v$sql where sql_id = '00000003CEA444C8';

实际上,上面是三个SQL可以联表,

SQL如下:

select t3.SQL_TEXT

  from v$process t1

 inner join v$session t2

    on t1.ADDR = t2.PADDR

 inner join v$sql t3

    on t2.SQL_ID = t3.SQL_ID

 where t1.SPID = 172928(这个pid就是进程id);

posted @ 2017-05-11 13:49  update_  阅读(2044)  评论(2编辑  收藏  举报