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如下(这个t1.SPID就是进程id):

select t3.SQL_TEXT,t3.sql_fulltext,t3.last_load_time,t3.last_active_time
 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 = 6513;

猜你喜欢

转载自blog.csdn.net/xianjuke008/article/details/113387028