關于內存參數的調整
2024-07-21 02:38:12
供稿:網友
關于參數調整,是Oracle的復雜性的一個具體體現。通常來講,我們更傾向于讓客戶做statspack報告,然后告訴我們os監控的狀況,在這些的信息的基礎上,再向客戶索取具體的具體信息以診斷問題的所在。系統的調整,現在我們通常采用從等待事件入手的方法。 因為一個系統感覺到慢,必然是在某個環節上出現等待,那么我們從等待最多的事件入手逐步診斷并解決問題。 對于內存的調整,相對來說簡單一些,我們首先可以針對數據緩沖區的大小來看。首先觀察命中率 數據緩沖區命中率SQL> select value from v$sysstat where name ='physical reads'; VALUE---------- 14764SQL> select value from v$sysstat where name ='physical reads direct'; VALUE---------- 50SQL> select value from v$sysstat where name ='physical reads direct (lob)'; VALUE---------- 0SQL> select value from v$sysstat where name ='consistent gets'; VALUE----------167763SQL> select value from v$sysstat where name = 'db block gets'; VALUE---------- 14305 這里命中率的計算應該是 令 x = physical reads direct + physical reads direct (lob) 命中率 =100 - ( physical reads - x) / (consistent gets + db block gets - x)*100 通常假如發現命中率低于90%,則應該調整應用可可以考慮是否增大數據緩沖區 共享池的命中率 SQL> select sum(pinhits)/sum(pins)*100 "hit radio" from v$librarycache; hit radio
---------- 99.809291 假如共享池的命中率低于95%,就要考慮調整應用(通常是沒使用bind var )或者增加內存 關于排序部分 SQL> select name,value from v$sysstat where name like '%sort%';NAME VALUE---------------------------------------------------------------- ----------sorts (memory) 67935
sorts (disk) 1sorts (rows) 7070SQL> 假如我們發現sorts (disk)/ (sorts (memory)+ sorts (disk))的比例過高,則通常意味著sort_area_size部分內存較小,可考慮調整相應的參數。 關于log_buffer SQL> select name,value from v$sysstat 2 where name in('redo entries','redo buffer allocation retries');NAME VALUE---------------------------------------------------------------- ----------redo entries 2325719redo buffer allocation retries 10 假如 redo buffer allocation retries/ redo entries 的比例超過1%我們就可以考慮增大log_buffer 通常來說,內存的調整的焦點就集中在這幾個方面,更多更具體的內容,建議從statspack入手來一步一步調整。最后關于內存的調整,再強調這一點,一定要結合操作系統來衡量,任何理論都必須要實踐來檢驗。在操作系統中觀察 page in/out 狀況,發現問題嚴重,應該考慮調小SGA。