Oracle進程佔用資源過大導致系統緩慢的問題

    記得有一次EBS系統運行非常緩慢,用戶的請求都不能及時的響應。首先檢查了操作系統進程,發現有幾個Oracle進程佔用資源非常高,當時懷疑是併發連接數太多。臨近中午系統狀態依然沒有好轉,重啓Apache,訪問速度暫時恢復了正常,十幾分鍾後問題又重現了。
    通過SQL反查語句,查詢到資源佔用異常的Oracle進程,再通過Oracle進程查詢到了SQL語句,最後開發人員對SQL語句進行優化,提高了SQL語句執行效率。最後系統運行速度恢復正常。
 
處理方法如下,請大家參考。
 
1、首先查看AIX系統進程,發現PID爲1852056的進程資源佔用居高不下,懷疑1852056就是造成系統緩慢的罪魁禍首!現在迫切的想知道1852056到底在幹什麼?
 
2、從上圖可以看到PID 1852056屬主是oraprod(Oracle用戶),需要通過PID 1852056來反查一下Oracle SID 。查詢語句:
select s.username,s.sid,s.serial# from v$session s ,v$process p
where s.paddr=p.addr
and p.spid= 1852056
通過上面的語句查詢到PID 1852056對應SID 445, 這時候1852056具體乾的工作還沒有表現出來,順藤摸瓜,接着往下找。
 
 
3、 接下來通過SID 445來查詢正在執行的SQL語句。
查詢語句:
select t2.sid, t2.serial#, t3.sql_text
from v$session t2, v$sqltext t3
where t2.sid in (445)
and t2.sql_address = t3.address
查詢到SID 445正在執行的SQL語句,爲什麼此程序佔用資源這麼高呢? 這時候就需要跟程序員溝通,優化SQL代碼。
 
 
4、如果確定終止SID 445對其它應用沒有影響,那麼就可以直接在OS層Kill -9將1852056殺掉。當殺掉PID 1852056被佔用的系統資源就會釋放掉。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章