Oracle 10g內(nèi)存結(jié)構(gòu)之共享池的相關(guān)知識(shí)及使用簡(jiǎn)介
之前我們介紹了:Oracle 10g內(nèi)存結(jié)構(gòu)之系統(tǒng)全局區(qū)簡(jiǎn)介,本文我們接著介紹一下Oracle 10g內(nèi)存結(jié)構(gòu)之共享池的相關(guān)知識(shí),接下來(lái)就讓我們一起來(lái)了解一下這部分內(nèi)容吧。
SGA中的第三個(gè)組成部分是共享池。共享池是對(duì)sql ,pl/sql 程序進(jìn)行語(yǔ)法分析、編譯、執(zhí)行的內(nèi)存區(qū)域。共享池包括庫(kù)緩沖區(qū)(library cache)、數(shù)據(jù)字典緩沖區(qū)(Data Directory Cache)用戶全局區(qū)(User Global Area)。其中庫(kù)緩沖區(qū)含有Sql 語(yǔ)句的分析碼、執(zhí)行計(jì)劃;數(shù)據(jù)字典緩沖區(qū)含有從數(shù)據(jù)字典中得到的表、列定義、權(quán)限。用戶全局區(qū)包含用戶的MTS 會(huì)話信息。
共享池主要用于對(duì)SQL 、pl/sql 程序語(yǔ)句進(jìn)行語(yǔ)法分析、編譯、執(zhí)行、所以,如果應(yīng)用中藥運(yùn)行大量存儲(chǔ)過(guò)程或包,則要增加共享池的尺寸。共享池的大小由參數(shù)SHARE_POOL_SIZE確定。要了解共享池大小,可以用以下方法:
方法一:
- ………
- Shared_Pool_size = 52428800
- …..
方法二:
- SQL> select name,value from v$parameter where name like ‘%size’;
方法三:
- SQL> show parameter share_pool_size
共享池應(yīng)計(jì)算存儲(chǔ)過(guò)程、包等的成功率。
可以查詢數(shù)據(jù)字典 v$rowcache 了解數(shù)據(jù)字典的成功與失敗次數(shù)。
- SQL> select sum(gets) “dictionary gets”,
- Sum(getmisses) “dictionary cache getmisses”
- From v$rowcache ;
其中g(shù)ets 表示讀取某一類數(shù)據(jù)字典的成功次數(shù),getsmisses 表示讀取某一類數(shù)據(jù)字典的失敗次數(shù)。此外還可以通過(guò)查詢結(jié)果計(jì)算共享池中讀取數(shù)據(jù)字典的成功率
- SQL> select parameter, get, getmisses, getmisses/(getmisses+gets)*100 “miss ratio”,
- (1- (sum(getmisses)/(sum(getmisses)+sum(gets)) ) ) *100 “hit ratio”
- From v$rowcache
- Where gets+getmisses<>0
- Group by parameter,gets,getmisses;
查詢數(shù)據(jù)字典 v$librarycache 可以計(jì)算共享池中庫(kù)緩存的失敗率,結(jié)果應(yīng)該小于1%。
- SQL>select sum(pins) “ total pins”, sum(reloads) “ total reloads”, sum(reloads)/sum(pins)*100 libarycache from v$librarycache;
其中 total pins 表示駐留內(nèi)存的次數(shù), total reloads 表示重新加載到內(nèi)存的次數(shù),librarycache 表示失敗率。
上面分析了系統(tǒng)全局區(qū)的三個(gè)組成部分-----數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)及共享池,如果要得到SGA的總大小,可以在SQL*Plus中使用show sga 命令。
SQL>show sga或查詢數(shù)據(jù)字典
SQL> select * from v$sga;
如果要查詢某個(gè)參數(shù)的大小,可以查詢數(shù)據(jù)字典v_$sagstat,通過(guò)計(jì)算可以知道sga的使用空間與空閑空間的比。
- SQL>col OBJECT_NAME format a20
- SQL> col 空閑空間百分比(%) format 90.99
- SQL> select name,
- Sgasize/1024/1024 “allocated(M)” ,
- Bytes/1024 “空閑空間(k)” ,
- Round(bytes/sagsize*100,2) “空閑空間百分比(%)”
- From ( select sum(bytes) sgasize from sys.v_$sgastat) s ,sys.v_$sgastat f
- Where f.name=’free memory’ ;
關(guān)于Oracle 10g內(nèi)存結(jié)構(gòu)之共享池的相關(guān)知識(shí)及使用方法就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】