本人很喜歡Oracle在工作中也很喜歡總結關於Oracle優化CPU使用率的經驗教訓下面就這個問題來詳細說說吧CPU是服務器的一項重要資源服務器良好的工作狀態是在工作高峰時CPU的使用率在%以上如果空閒時間Oracle優化CPU使用率就在%以上說明服務器缺乏CPU資源如果工作高峰時Oracle優化CPU使用率仍然很低說明服務器CPU資源還比較富余
查看Oracle優化CPU使用率
使用操作相同命令可以看到CPU的使用情況一般Unix操作系統的服務器可以使用sar u命令查看Oracle優化CPU使用率Windows NT操作系統的服務器可以使用性能管理器來查看CPU的使用率
查看數據庫使用CPU的時間
可以通過查看V$SYSSTAT數據字典中CPU used by this session統計項得知Oracle數據庫使用的CPU時間查看OS User level CPU time統計項得知操作系統的用戶態下CPU時間查看OS System call CPU time統計項得知操作系統的系統態下CPU時間操作系統總的CPU時間就是用戶態和系統態時間之和如果Oracle數據庫使用的CPU時間占操作系統總的CPU時間%以上說明服務器CPU基本上被Oracle數據庫使用著反之則說明服務器CPU被其它程序占用過多Oracle數據庫無法得到更多的CPU時間
數據庫管理員還可以通過查看V$SYSSTAT數據字典來獲得當前連接Oracle數據庫各個會話占用的CPU時間從而得知什麼會話耗用服務器CPU比較多出現CPU資源不足的情況是很多的SQL語句的重解析低效率的SQL語句鎖沖突都會引起CPU資源不足
查看SQL語句的解析情況
數據庫管理員可以執行下述語句來查看SQL語句的解析情況
SELECT * FROM V$SYSSTAT
WHERE NAME IN
(parse time cpu parse time elapsed parse count (hard));
這裡parse time cpu是系統服務時間parse time elapsed是響應時間用戶等待時間waite time = parse time elapsed parse time cpu
由此可以得到用戶SQL語句平均解析等待時間=waite time / parse count這個平均等待時間應該接近於如果平均解析等待時間過長數據庫管理員可以通過下述語句來發現是什麼SQL語句解析效率比較低
SELECT SQL_TEXT PARSE_CALLS EXECUTIONS FROM V$SQLAREA
ORDER BY PARSE_CALLS;
程序員可以優化這些語句或者增加Oracle參數SESSION_CACHED_CURSORS的值以上介紹Oracle優化CPU使用率
From:http://tw.wingwit.com/Article/program/Oracle/201311/17990.html