1. 檢查作業系統是否存在IO的問題?使用的工具有sar,這是一個比較通用的工具。(加上-u參數為看CPU狀態,,每3秒更新一次,,共顯示5次)
%usr指的是用戶process使用的CPU資源的百分比
%system指的是系統process使用CPU資源的百分比
%iowait指的是等待I/O完成的百分比,這是值得我們觀注 的一項
%idle即閒置的百分比。如果%wio列的值很大,如在30以上,說明你的系統的I/O存在瓶頸,你的CPU花費了很大的時間去等待I/O的完成。 %idle很小說明系統CPU很忙。
當你的系統存在IO的問題,可以從以下幾個方面解決
* 檢查是否硬體配置過老舊,RAID是否需要擴建,RAID中的硬碟是否有故障。
* 系統是否有process咬著I/O資源不放或是很頻繁的進行大量讀寫。
* 對Oracle中讀取頻繁的table除建索引外,再來就是把這些table存放於不同的tablespace上,避免造成某幾個硬碟讀取特別頻繁。
* 查找Oracle中不合理的sql語句,對其進行優化。
2、關注一下記憶體(常用的指令便是free -mt)
a = 總記憶體大小
b = 配給 buffers 與 cache 的記憶體大小(包含未用的 buffers 與 cache)
c = 剩下的記憶體大小
e = 配給 buffers 但未用的記憶體大小
f = 配給 cache 但未用的記憶體大小
g = buffers 與 cache 被使用掉的記憶體大小,也就是實際被應用程式用走的
h = 那這個就是實際剩下的記憶體大小
a = b + c
a = g + h
g = b - e - f
h = c + e + f
buffer 與 cache 的區別:
A buffer is something that has yet to be "written" to disk.
A cache is something that has been "read" from the disk and stored for later use.
當你的系統存在IO的問題,可以從以下幾個方面解決
* 劃給Oracle使用的記憶體不要超過系統記憶體的1/2,
一般Oracle會使用OS記憶體的40%作為SGA,因為Oracle評估OS會使用掉20%的記憶體,剩下的80%折衷取40%。
* 為系統增加記憶體。
* 如果你的session特別多,而且多為交易時間短的OLTP,可以考慮使用share server。
* 更新patch,防止記憶體漏洞。