《深入解析Oracle》第五章,記憶體管理

louloueva發表於2009-03-29

本章內容主要是講解Oracle的PGA,SGA的記憶體分配問題
整體上和自己以前瞭解的相一致
當然,程度更加深入
簡單記錄一些

PGA,程式全域性區,可分為固定、可變兩部分
而可變PGA區是DBA更關心的
其中包括會話記憶體(存放session登入相關資訊)和私有SQL區(SQL執行狀態、遊標等資訊)
其中,每個使用者可開啟遊標數受到OPEN_CURSORS引數的限制

UGA,使用者全域性區,主要是使用者會話,遊標狀態等相關資料
CGA,呼叫全域性區,用於分析、執行SQL,獲取結果集
兩者預設情況包含在PGA中,也可由Oracle自行單獨劃分記憶體

V$PGASTST檢視可用於查詢PGA相關資訊
而10g之後的V$PROCESS檢視也提供了關於程式消耗PGA的相關欄位
SQL工作區分為三種模式(optimal,onepass,multipass)
一般情況,屬於optimal的操作越多表示資料庫效能越好
可通過V$SYSSTAT檢視查詢相關,以此作為PGA效能參考
V$PAG_TARGET_ADVICE,V$PGA_TARGET_ADVICE_HISTOGRAM
會給使用者提出一些用於調整PGA的參考數值

SGA,系統全域性區
可分為固定區,緩衝快取,共享池,重做日誌緩衝等子區(以前瞭解過)
V$SGASTST檢視可查詢相關資訊(但書上說因為bug等因素,數值不太準……)
SGA的設定,儘量小於作業系統的shmmax,最大共享記憶體(Windows系統無需特別注意)
V$DB_CACHE_ADVICE,V$SHARED_POOL_ADVICE
為使用者提供SGA設定參考數值

當Oracle發展到現在,對於記憶體管理已經可以完全自動化了
以個人接觸最多的10g來說
PGA,SGA都有各自的引數用來指定是否由Oracle自動分配,並可設定記憶體額度
另外,Oracle也給出不同資料庫環境的設定建議
OLTP系統中,Oracle應使用不大於系統總記憶體80%的記憶體數
其中PGA使用份額大約是Oracle使用記憶體總數的20%
而對於DSS系統,總記憶體數不變,PGA使用量大約為50%
不正確的記憶體引數設定,將可能導致無法連線Oracle,CPU佔有率過高等問題
書中還介紹了很多隱含引數以及細節原理,就不一一記錄了

總的說來,本週進度還算可以接受
希望下週可以繼續保持這種狀態
不過……第六章是個比較難啃的骨頭,近100頁
大概進度要受到不少影響了 ◎◎

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/556359/viewspace-580551/,如需轉載,請註明出處,否則將追究法律責任。

相關文章