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系統物理內存的1/2——1/3,我們可以根據需求調整
我推薦SGA=0.45*(OS RAM)
假設服務器運行ORACLE 8.1.X 版本, OS系統內存為2G MEM, db_block_size 是8192 bytes,
除了運行ORACLE數據庫外, 沒有其它的應用程序或服務器軟件.
這樣SGA合計約為921M ( 0.45*2048M ),
設shared_pool_size 250M (250*1024*1024 bytes)
設database buffer cache 620M (79360*8192 bytes)
initorasid.ora文件里具體各參數如下:
shared_pool_size = 262144000
# 250 M
db_block_buffers = 79360
# 620 M
log_buffer = 524288
# 512k (128K*CPU個數)
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文件里的幾個參數同樣跟內存分配有關
ORACLE安裝時缺省的設置: | 建議修改的設置: |
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 |
其中這些參數的含義
shmmax - 共享內存段的最大字節數,建議設大點,甚至可以大過物理內存的字節數
shmmin - 共享內存段的最小尺寸.
shmmni - 共享內存段的最大數目.
shmseg - 每個進程可分配的最大共享內存段數目.
shmall - 最大的并發共享內存段數目,比SGA還要大.
semmns - 信號燈的最大數量,跟ORACLE的PROCESS數有關.
semmsl - 每個信號燈集合中最多的信號燈數目.