oracle記憶體結構與管理

junnyblog發表於2009-10-08

計劃二週時間(基礎篇) :2009-10-08至2009-10-20 整理中......

Oracle的記憶體分配相當複雜,到真正寫起日誌來,發現真不是那麼容易寫。。。。。(初稿,有待完善)

[@more@]

Oracle記憶體結構主要包括三大部分:
一、程式全域性區(PGA)
1、PGA主要是系統為Oracle程式所分配的記憶體,主要包括程式記憶體,同時專用服務連線還包括UGA。對非UGA記憶體,PGA有手動PGA記憶體管理和自動PGA記憶體管理。
2、引數WORKAREA_SIZE_POLICY=AUTO表示自動PGA記憶體管理。
二、使用者全域性區
1、UGA為會話所有。UGA的分配取決於連線Oracle方式。共享伺服器連線,UGA在SGA的大池中劃分;專用伺服器連線,UGA相當於PGA,UGA在PGA劃分。
三、系統全域性區
1、SGA是Oracle例項一啟動就分配一大塊共享記憶體,(這就是為什麼Oracle佔用那麼大記憶體的原因之一),是Oracle程式進行通訊的基礎.
(如果開發多程式應用,共享記憶體是多程式進行通訊常用的方式,同時還訊息佇列,管道等方式。ipcs -m | grep ora 可以檢視分配的記憶體 Linux),
SGA記憶體管理可以分為手動SGA記憶體管理和自動SGA記憶體管理,自動SGA記憶體管理每個元件按需求進行分配,以SGA_TARGET初始值為標準,不超過此值。
設定為自動SGA記憶體管理,同時手動設定某一個元件大小,則表示此大小為該元件的下限
2、檢視SGA:V$SGASTAT
3、SGA細分為:
(1)共享池(Share Pool)----最重要部分.
a、庫快取(Library Cache) 共享SQL區(Shared SQL Area):即解釋計劃在此快取,快取的SQL(這裡所說SQL包括單個SQL查詢,PL/SQL,包等)提供共享;
b、資料字典快取(Data Dictionary Cache):快取方式為行快取,行為單位,區別於Block Buffer Cache的資料塊為單位的快取方式
c、共享池引數:SHARE_POOL_SIZE
d、共享池常見問題ORA-04031:PL/SQL重用很低,解析查詢頻繁,系統使用大量資源管理共享池中的物件。
e、共享池的目的:其中主要目的是為了反覆使用查詢計劃
f、管理共享池誤區:盲目增加共享池記憶體空間,可能造成更大系統開消,加重系統負擔,原因共享池受系統管理,共享池更大,管理更加困難。
解決共享池辦法:加大重用查詢,真正體現建立共享池的目的,一個常用辦法是繫結變數
(2)塊緩衝區快取(block buffer cache)也叫資料緩衝區(database buffer cache):
a、重要區,包括:預設池(段塊緩衝池)、保持池(常駐記憶體池)、回收池 (三種池之間沒有共享)
b、塊緩衝區引數:DB_CACHE_SIZE
c、緩衝區快取中管理塊:塊分為--髒塊列表、非髒塊列表(最近最少使用) 8i之前是按物理順序
d、緩衝區的命中率:命中率=(1-(物理讀)/(邏輯讀))*100 其中物理讀和邏輯讀分別從磁碟和記憶體讀取。命中率是資料庫一個重要效能指標,但高命中率不代表效能高。
(3)重做緩衝區(redo buffer):
a、重做緩衝區的目的:塊緩衝區快取的資料->重做緩衝區->重做日誌(作為塊緩衝區到重做日誌中間過度) 大的重做緩衝區對較長事務執行有好處。
b、重做緩衝區引數:LOG_BUFFER定義重做緩衝區大小,同時重做緩衝區大小例項執行期間保持不變,區別於共享池的動態調整。
c、重做日誌寫入程式何時把緩衝區內容寫入到磁碟:a、重做日誌緩衝區填充三分之一;b、使用者提交了一個事務;c、塊緩衝區快取資料需要寫入重做緩衝區
d、重做緩衝區常見問題:太小的會導致日誌寫入程式過天頻繁。其中nologging選項可以繞過重做日誌避免某些競爭,同時還可以對長作業進行批次提交。
(4)固定SGA:相當於指標,作用是指向SGA中其他元件的變數,此元件,DBA不用幹預
(5)大池----共享伺服器,主要用於大塊記憶體的分配,大池的記憶體可以釋放,但是共享池的記憶體不存在釋放。RMAN一般使用此部分記憶體。引數為LARGE_POOL_SIZE
(6)JAVA池----用於支援在資料庫中執行JAVA(如:JVM,JAVA編寫的儲存過程,JAVA類等)
(7)流池----主要是支援例項中Streams活動而分配記憶體,引數為STREAMS_POOL_SIZE。具體請檢視Stream方面知識。

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

相關文章