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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM