最近调整初始化参数,设置 db_8k_cache_size=2250m。 改完后,show 的时候发现值是 2256M。
原因是 _ksm_granule_size 参数, 它为最低粒度大小;
如果SGA_MAX_SIZE小于128M,则_ksm_granule_size为4M;
如果SGA_MAX_SIZE大于等于128M,则_ksm_granule_size为8M
查询
select x.ksppinm name,y.ksppstvl value,x.ksppdesc descbtion
from x$ksppi x,x$ksppcv y
where x.inst_id=userenv('Instance')
and y.inst_id=userenv('Instance')
and x.indx=y.indx
and x.ksppinm like '%_ksmg_granule%';
NAME VALUE DESCBTION
---------------------------------------- ------------------------------ ------------------------------
_ksmg_granule_size 16777216 granule size in bytes
_ksmg_granule_locking_status 1 granule locking status
_ksmg_granule_size = 16M 所以设置的db_8k_cache_size会以最接近设置值2250 的16m 的倍数2256M出现。