Oracle數(shù)據(jù)庫SGA的一些筆記
SGA 和Oracle的每一個(gè)實(shí)例對應(yīng),實(shí)例啟用則系統(tǒng)分配一個(gè)SGA,在實(shí)例關(guān)閉的時(shí)候回收。服務(wù)器端所有的歷程以及Oracle的后臺(tái)歷程均可拜會(huì)SGA,局部的歷程有寫SGA的權(quán)限。 SGA中有一局部的內(nèi)存,叫做Fixed SGA,其中包括了數(shù)據(jù)庫實(shí)例的事態(tài)。
SGA 包括以下幾個(gè)局部:
Buffer Cache
重要儲(chǔ)藏block數(shù)據(jù)的拷貝,對所有用戶分享。 在這個(gè)cache中所有的block重要以兩個(gè)隊(duì)列的數(shù)據(jù)構(gòu)造保留。
Write List: 儲(chǔ)藏一些曾經(jīng)被修正的數(shù)據(jù)(dirty data)。
LRU List: 保留三局部消息: 空block, pinned buffer(猜該當(dāng)是沒修正的,正處理的),dirty buffer(還未曾被遷移到Write List-- 這里就能夠看出把buffer從LRU List到Write List的挪動(dòng)并不是實(shí)時(shí)的,而是有一個(gè)引發(fā)的過程1)。
流程描寫如下:一個(gè)DB的process試圖讀取一個(gè)block的內(nèi)容,率先會(huì)查詢buffer cache看里面是否有對應(yīng)的block, 萬一有則直接讀取(cache hit),萬一未曾的話,就會(huì)在LRU List里面從LRU端開始尋找輕便的空buffer,萬一碰到了Dirty Buffer,則移到Write List(解釋了上標(biāo)1),然后繼續(xù)尋找。萬一找到輕便的free buffer,就將block裝載到buffer cache中,萬一最后未曾找到,就動(dòng)身DBW0事件,將dirty buffer寫入到磁盤中。
等閑理況下buffer cahce會(huì)將新的block儲(chǔ)藏的LRU的MRU端(最新拜會(huì)),然而萬一是全表掃描,則會(huì)將新讀入的blocks納入到LRU端(全表掃都是多個(gè)blocks同時(shí)讀取,而非單block讀取--參見書COB第19頁)。萬一想要全表掃時(shí)放到MRU端,則需在select語句中指定利用'cache'。例如:SELECT last_name FROM employees hr_emp;
Redo Log Buffer
儲(chǔ)藏一些redo的消息,這些消息能夠redo語句insert/update/delete/alter/create/drop,redo buffer是由db process從用戶內(nèi)存中拷貝到redo log buffer,這個(gè)buffer挪借了繼續(xù)的空間,redo log buffer由LGWR寫到redo log中。
Share Pool
重要包括Library cache,Data cache,result cache(11g新出來的)。
Library cache 包括Shared SQL areas,Private SQL areas (萬一是利用shared server),pl/sql的procedure和package,以及一些扼制消息例如鎖,最后還有l(wèi)ibrary cache的handle。
Share SQL Area是針對所有用戶,而Private SQL Area對每一個(gè)用戶都有一個(gè)獨(dú)自的copy.華擎在Shared SQL Area中,Oracle存儲(chǔ)sql的分析樹和厲行計(jì)劃,當(dāng)一個(gè)新的sql被分析時(shí),Oracle從Share SQL Area中分配一個(gè)空間,空間大小隨sql的混雜度而改變,萬一空間不足www.d1am.com的話,Oracle會(huì)依據(jù)LRU算法釋放本來挪借的空間而分配給新的sql.
對于一些plsql過程段,oracle也是一樣看待,在Share SQL Area中分析,在Private SQL Area中存儲(chǔ)相干的變量及SQL的厲行空間。在PLSQL過程段中的sql,也會(huì)分配一個(gè)自力更生的Share SQL Area 和Private SQL Area.
刷新share sql area的幾個(gè)措施:
1.利用analyze 語句。
2.sql中引用的對象被改換。
3.database 的 global name被改換。
4.alter system flush shared_pool。
關(guān)于Oracle數(shù)據(jù)庫SGA的知識(shí)的總結(jié)就介紹這么多,希望能夠帶給您一些收獲吧。
【編輯推薦】






