新聞中心
SGA和Oracle的每一個(gè)實(shí)例對(duì)應(yīng),實(shí)例啟用則系統(tǒng)分配一個(gè)SGA,在實(shí)例關(guān)閉的時(shí)候回收。服務(wù)器端所有的歷程以及Oracle的后臺(tái)歷程均可拜會(huì)SGA,局部的歷程有寫(xiě)SGA的權(quán)限。 SGA中有一局部的內(nèi)存,叫做Fixed SGA,其中包括了數(shù)據(jù)庫(kù)實(shí)例的事態(tài)。

SGA 包括以下幾個(gè)局部:
Buffer Cache
重要儲(chǔ)藏block數(shù)據(jù)的拷貝,對(duì)所有用戶分享。 在這個(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)是沒(méi)修正的,正處理的),dirty buffer(還未曾被遷移到Write List-- 這里就能夠看出把buffer從LRU List到Write List的挪動(dòng)并不是實(shí)時(shí)的,而是有一個(gè)引發(fā)的過(guò)程1)。
流程描寫(xiě)如下:一個(gè)DB的process試圖讀取一個(gè)block的內(nèi)容,率先會(huì)查詢buffer cache看里面是否有對(duì)應(yīng)的block, 萬(wàn)一有則直接讀取(cache hit),萬(wàn)一未曾的話,就會(huì)在LRU List里面從LRU端開(kāi)始尋找輕便的空buffer,萬(wàn)一碰到了Dirty Buffer,則移到Write List(解釋了上標(biāo)1),然后繼續(xù)尋找。萬(wàn)一找到輕便的free buffer,就將block裝載到buffer cache中,萬(wàn)一最后未曾找到,就動(dòng)身DBW0事件,將dirty buffer寫(xiě)入到磁盤(pán)中。
等閑理況下buffer cahce會(huì)將新的block儲(chǔ)藏的LRU的MRU端(最新拜會(huì)),然而萬(wàn)一是全表掃描,則會(huì)將新讀入的blocks納入到LRU端(全表掃都是多個(gè)blocks同時(shí)讀取,而非單block讀取--參見(jiàn)書(shū)COB第19頁(yè))。萬(wàn)一想要全表掃時(shí)放到MRU端,則需在select語(yǔ)句中指定利用'cache'。例如:SELECT last_name FROM employees hr_emp;
Redo Log Buffer
儲(chǔ)藏一些redo的消息,這些消息能夠redo語(yǔ)句insert/update/delete/alter/create/drop,redo buffer是由db process從用戶內(nèi)存中拷貝到redo log buffer,這個(gè)buffer挪借了繼續(xù)的空間,redo log buffer由LGWR寫(xiě)到redo log中。
Share Pool
重要包括Library cache,Data cache,result cache(11g新出來(lái)的)。
Library cache 包括Shared SQL areas,Private SQL areas (萬(wàn)一是利用shared server),pl/sql的procedure和package,以及一些扼制消息例如鎖,最后還有l(wèi)ibrary cache的handle。
Share SQL Area是針對(duì)所有用戶,而Private SQL Area對(duì)每一個(gè)用戶都有一個(gè)獨(dú)自的copy.華擎在Shared SQL Area中,Oracle存儲(chǔ)sql的分析樹(shù)和厲行計(jì)劃,當(dāng)一個(gè)新的sql被分析時(shí),Oracle從Share SQL Area中分配一個(gè)空間,空間大小隨sql的混雜度而改變,萬(wàn)一空間不足www.d1am.com的話,Oracle會(huì)依據(jù)LRU算法釋放本來(lái)挪借的空間而分配給新的sql.
對(duì)于一些plsql過(guò)程段,oracle也是一樣看待,在Share SQL Area中分析,在Private SQL Area中存儲(chǔ)相干的變量及SQL的厲行空間。在PLSQL過(guò)程段中的sql,也會(huì)分配一個(gè)自力更生的Share SQL Area 和Private SQL Area.
刷新share sql area的幾個(gè)措施:
1.利用analyze 語(yǔ)句。
2.sql中引用的對(duì)象被改換。
3.database 的 global name被改換。
4.alter system flush shared_pool。
關(guān)于Oracle數(shù)據(jù)庫(kù)SGA的知識(shí)的總結(jié)就介紹這么多,希望能夠帶給您一些收獲吧。
【編輯推薦】
- 淺析Oracle 10g isqlplus使用DBA賬戶的方法
- Oracle數(shù)據(jù)庫(kù)中如何檢查索引碎片并重建索引
- Oracle數(shù)據(jù)庫(kù)定時(shí)器Job在各個(gè)時(shí)間的寫(xiě)法總結(jié)篇
- 簡(jiǎn)單介紹一下Oracle數(shù)據(jù)庫(kù)PL/SQL異常處理代碼
- Oracle數(shù)據(jù)庫(kù)中各種類(lèi)型的文件損壞與修復(fù)過(guò)程詳解
網(wǎng)站名稱(chēng):Oracle數(shù)據(jù)庫(kù)SGA的一些筆記
本文網(wǎng)址:http://m.fisionsoft.com.cn/article/dhgogeo.html


咨詢
建站咨詢
