ORACLE 8.0.X 版本
SGA=((db_block_buffers * block size)+(shared_pool_size+large_pool_size+log_buffers)+1MB
ORACLE 8.1.X 版本
SGA=((db_block_buffers * block size)+(shared_pool_size+large_pool_size+java_pool_size+log_buffers)+1MB
理論上SGA可占OS系統(tǒng)物理內(nèi)存的1/2——1/3,我們可以根據(jù)需求調(diào)整
我推薦SGA=0.45*(OS RAM)
假設(shè)服務(wù)器運(yùn)行ORACLE 8.1.X 版本, OS系統(tǒng)內(nèi)存為2G MEM, db_block_size 是8192 bytes,
除了運(yùn)行ORACLE數(shù)據(jù)庫外, 沒有其它的應(yīng)用程序或服務(wù)器軟件.
這樣SGA合計約為921M ( 0.45*2048M ),
設(shè)shared_pool_size 250M (250*1024*1024 bytes)
設(shè)database buffer cache 620M (79360*8192 bytes)
initorasid.ora文件里具體各參數(shù)如下:
shared_pool_size = 262144000
# 250 M
db_block_buffers = 79360
# 620 M
log_buffer = 524288
# 512k (128K*CPU個數(shù))
large_pool_size = 31457280
# 30 M
java_pool_size = 20971520
# 20 M
sort_area_size = 524288
# 512k (65k--2M)
sort_area_retained_size = 524288
# MTS 時 sort_area_retained_size = sort_area_size
SUN Solaris里/etc/system文件里的幾個參數(shù)同樣跟內(nèi)存分配有關(guān)
ORACLE安裝時缺省的設(shè)置: | 建議修改的設(shè)置: |
set shmsys:shminfo_shmmax=4294967295 set shmsys:shminfo_shmmin=1 set shmsys:shminfo_shmmni=100 set shmsys:shminfo_shmseg=15 set semsys:seminfo_semmns=200 set semsys:seminfo_semmni=70 set ulimit=3000000 | set semsys:seminfo_semmni=315 set semsys:seminfo_semmsl=300 set semsys:seminfo_semmns=630 set semsys:seminfo_semopm=315 set semsys:seminfo_semvmx=32767 set shmsys:shminfo_shmmax=4294967295 set shmsys:shminfo_shmmni=315 set shmsys:shminfo_shmseg=10 set shmsys:shminfo_shmmin=1 |
其中這些參數(shù)的含義
shmmax - 共享內(nèi)存段的最大字節(jié)數(shù),建議設(shè)大點,甚至可以大過物理內(nèi)存的字節(jié)數(shù)
shmmin - 共享內(nèi)存段的最小尺寸.
shmmni - 共享內(nèi)存段的最大數(shù)目.
shmseg - 每個進(jìn)程可分配的最大共享內(nèi)存段數(shù)目.
shmall - 最大的并發(fā)共享內(nèi)存段數(shù)目,比SGA還要大.
semmns - 信號燈的最大數(shù)量,跟ORACLE的PROCESS數(shù)有關(guān).
semmsl - 每個信號燈集合中最多的信號燈數(shù)目.