oracle 之 内存—鞭辟近里(一)
生活随笔
收集整理的這篇文章主要介紹了
oracle 之 内存—鞭辟近里(一)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
oracle 之 內(nèi)存—鞭辟近里(一)
今天是2013-07-8日,這幾天一直都在尋找一本深入研究oracle內(nèi)存的書(shū)籍,期間一波三折弄的自己神魂顛倒,但是還是被我拿下了,感謝支持我的朋友,這周打算把oracle的內(nèi)存進(jìn)行一下深入剖析,以此記錄學(xué)習(xí)筆記。
?? 一)內(nèi)存體系結(jié)構(gòu):
? 每當(dāng)數(shù)據(jù)庫(kù)的實(shí)例啟動(dòng)的時(shí)候oracle? database就會(huì)分配內(nèi)存以及后臺(tái)進(jìn)程,在內(nèi)存區(qū)域中存儲(chǔ)的如下相關(guān)信息:
》程序代碼
》關(guān)于以及連接的會(huì)話(huà)信息,即使該會(huì)話(huà)不是活動(dòng)狀態(tài)。
》程序執(zhí)行期間需要的相關(guān)信息
》關(guān)于數(shù)據(jù)共享一些鎖的信息。
》緩沖的數(shù)據(jù),想數(shù)據(jù)塊和重做日志記錄等等。
可以查一下上面這個(gè)圖:
A)基本的內(nèi)存結(jié)構(gòu)包括如下部分:
1)sga(系統(tǒng)全局區(qū),system global area)
sga有很多共享內(nèi)存結(jié)構(gòu)組成,叫做sga的組件,它包括一些關(guān)于實(shí)例的數(shù)據(jù)信息和控制信息,sga被所有的服務(wù)進(jìn)程和后臺(tái)進(jìn)程所共享。例如數(shù)據(jù)存儲(chǔ)在sga中包括緩存的數(shù)據(jù)塊和共享sql區(qū)域。
2)pga(程序全局區(qū),program global area)
pga是被一個(gè)oracle進(jìn)程獨(dú)自占有的不是共享的一塊區(qū)域,它包含一些數(shù)據(jù)信息和控制信息。在oracle進(jìn)程啟動(dòng)的時(shí)候該區(qū)域就被創(chuàng)建了。
pga是為每個(gè)服務(wù)進(jìn)程和后臺(tái)進(jìn)程存在的,所有的服務(wù)進(jìn)程和是后臺(tái)進(jìn)程 鎖分配的所有pga成為實(shí)例pga大小。oracle只能對(duì)整個(gè)所有pga的大小進(jìn)行限制,不能對(duì)單個(gè)進(jìn)程的pga進(jìn)行設(shè)置大小。
3)uga(用戶(hù)全局區(qū),user global area)
uga保存了一些用戶(hù)的會(huì)話(huà)信息。
4) 軟件代碼區(qū)(software code areas)
該區(qū)域是存儲(chǔ)一些執(zhí)行的代碼或是能夠被執(zhí)行的代碼的區(qū)域。
B)oracle database 內(nèi)存管理
內(nèi)存管理就是可以根據(jù)數(shù)據(jù)庫(kù)的不斷變化能夠維護(hù)oracle內(nèi)存的相關(guān)結(jié)構(gòu)大小,并且給予內(nèi)存的相關(guān)components一個(gè)合理的值。oracle內(nèi)存的管理是通過(guò)設(shè)置相關(guān)參數(shù)文件中的參數(shù)進(jìn)行設(shè)定的。其中包括如下管理方式:
1)自動(dòng)內(nèi)存管理(automatic memory management)
dba可以指定一個(gè)總的目標(biāo)內(nèi)存值,然后數(shù)據(jù)庫(kù)實(shí)例就會(huì)自動(dòng)的對(duì)內(nèi)存的相關(guān)組件按照不同的需求進(jìn)行自動(dòng)動(dòng)態(tài)調(diào)整內(nèi)存大小,也就是安裝不同內(nèi)存的需求動(dòng)態(tài)的調(diào)整pga和sga的相關(guān)大小。(該內(nèi)容在后續(xù)進(jìn)行深入研究)
2)自動(dòng)共享內(nèi)存管理((automatic shared memory management)
該管理模式是對(duì)內(nèi)存的一個(gè)部分自動(dòng)管理。你可以給sga設(shè)置一個(gè)總的大小目標(biāo)值然后再設(shè)置一個(gè)總的pga大小內(nèi)存值進(jìn)行管理。
3)手動(dòng)內(nèi)存管理(manual memory management)
手動(dòng)內(nèi)存管理就不是設(shè)置一個(gè)目標(biāo)最大值了,而是通過(guò)參數(shù)文件中的相關(guān)參數(shù)進(jìn)行每個(gè)內(nèi)存組件的手動(dòng)管理。(該方式繁瑣,被棄用了)
note:在11g中,如果在創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候使用dbca然后選擇基本按照方式的時(shí)候,默認(rèn)是采用了自動(dòng)內(nèi)存管理。
?
總結(jié)
以上是生活随笔為你收集整理的oracle 之 内存—鞭辟近里(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ubuntu下nagios监控远程主机
- 下一篇: 2012年读书目录