更新時(shí)間:2021-03-11 17:53:36 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1449次
SGA系統(tǒng)全局區(qū)的英文簡稱,SGA(System Global Area)是Oracle Instance的基本組成部分,在實(shí)例啟動(dòng)時(shí)分配。Oracle數(shù)據(jù)庫中的SGA是一組包含一個(gè)Oracle實(shí)例的數(shù)據(jù)和控制信息的共享內(nèi)存結(jié)構(gòu)。主要是用于存儲數(shù)據(jù)庫信息的內(nèi)存區(qū),該信息為數(shù)據(jù)庫進(jìn)程所共享(PGA不能共享的)。Oracle SGA組件包含Oracle服務(wù)器的數(shù)據(jù)和控制信息,它是在Oracle服務(wù)器所駐留的計(jì)算機(jī)的實(shí)際內(nèi)存中得以分配,如果實(shí)際內(nèi)存不夠再往虛擬內(nèi)存中寫。
SGA主要由數(shù)據(jù)高速緩沖區(qū)(Database Buffer Cache)、共享池(Shared Pool)、重做日志緩沖區(qū)(Redo Log Buffer)、大型池(Large Pool)、Java池(Java Pool)、流池(Streams Pool)和其他結(jié)構(gòu)(如固定SGA、鎖管理等)組成,下面我們大致一一介紹一下。
1、數(shù)據(jù)庫高速緩沖(the data buffer cache)
在數(shù)據(jù)高速緩沖區(qū)中存放著Oracle系統(tǒng)使用過的數(shù)據(jù)塊(即用戶的高速緩沖區(qū)),當(dāng)把數(shù)據(jù)寫入數(shù)據(jù)庫時(shí),它以數(shù)據(jù)塊為單位進(jìn)行讀寫,當(dāng)數(shù)據(jù)高速緩沖區(qū)填滿時(shí),則系統(tǒng)自動(dòng)去掉一些不常被用戶訪問的數(shù)據(jù)。如果用戶要查的數(shù)據(jù)不在數(shù)據(jù)高速緩沖區(qū)時(shí),Oracle自動(dòng)從磁盤中去讀取。數(shù)據(jù)高速緩沖區(qū)包括三個(gè)類型的區(qū):
1) 臟數(shù)據(jù)區(qū)(Dirty Buffers):包含有已經(jīng)改變過并需要寫回?cái)?shù)據(jù)文件的數(shù)據(jù)塊。
2) 自由區(qū)(Free Buffers):沒有包含任何數(shù)據(jù)并可以再寫入的區(qū),Oracle可以從數(shù)據(jù)文件讀數(shù)據(jù)塊該區(qū)。
3) 保留區(qū)(Pinned Buffers):此區(qū)包含有正在處理的或者明確保留用作將來用的區(qū)。
2、共享池
1)庫高速緩存:用來接收pga傳遞過來的hashvalue,如果該值存在,做軟分析,否則,做硬分析,定義語句是全標(biāo)掃描還是索引掃描。
2)數(shù)據(jù)字典高速緩存:提供訪問的對象是表還是索引還是同義詞,表空間、數(shù)據(jù)文件等,進(jìn)行遞歸調(diào)用。
3)服務(wù)器進(jìn)程用來讀取數(shù)據(jù)文件到數(shù)據(jù)高速緩存區(qū)中,然后進(jìn)行的讀取。
3、重做日志緩沖區(qū)(Redo Log Buffer)
與塊的更改有關(guān),其大小需要手工設(shè)置。
4、大型池(Large Pool)
大池是一個(gè)可選區(qū)域。如果創(chuàng)建了大池,那各種進(jìn)程都會(huì)自動(dòng)使用大池。否則就只能使用共享池中的內(nèi)存。之所以稱之為大池,是因?yàn)樗糜诖髩K內(nèi)存的分配,共享池不會(huì)處理這么大的內(nèi)存塊。
大池專門用于以下情況:
1)共享服務(wù)器連接,用于在SGA中分配UGA區(qū),因?yàn)橐粋€(gè)用戶斷開之后,UGA就可以立即釋放;
2)語句的并行執(zhí)行,允許分配進(jìn)程間的消息緩沖區(qū),這些緩沖區(qū)用于協(xié)調(diào)并行查詢服務(wù)器。一旦發(fā)送了緩沖消息就可以立即釋放;
3)備份,在某些情況下用于RMAN磁盤I/O 緩沖區(qū)。因?yàn)閷懭氪疟P之后,這些緩存可以立即釋放;
5、Java池(Java Pool)
是為滿足在ORACLE中內(nèi)嵌JAVA存儲過程或其他JAVA程序(例如CORBA中間件)運(yùn)行時(shí)而需要的內(nèi)存,如果不用JAVA等程序,就無須設(shè)置,使其值為0就可以了。
6、流池(Streams Pool)
9iR2以上增加了“流”技術(shù),10g以上在SGA中增加了流池。流是用來共享和復(fù)制數(shù)據(jù)的工具。
7、固定SGA(Fixed SGA)
可以把這個(gè)區(qū)想成是 SGA中的“自啟”區(qū),Oracle在內(nèi)部要使用這個(gè)區(qū)來找到SGA的其他區(qū)。換一句話,就是在這個(gè)內(nèi)存里面存有其他區(qū)的地址,我們可以通過訪問這個(gè)區(qū)來查找到其他區(qū)的位置。
總的來說,可以把Oracle SGA組件看成是由這7個(gè)部分組成,它們之前相輔相成,互相協(xié)作,共同組成了Oracle中的Oracle實(shí)例的數(shù)據(jù)和控制信息的共享內(nèi)存結(jié)構(gòu)。在本站的Oracle教程中,我們會(huì)深入介紹這些組件的各個(gè)作用和屬性,想學(xué)習(xí)的小伙伴千萬不要錯(cuò)過這精彩的課程。
初級 202925
初級 203221
初級 202629
初級 203743