怎樣改為:使用 300M 內(nèi)存,100M 共享池,200M數(shù)據(jù)池?
db_name = orcl
db_files = 1020
control_files = ("C:\orant\database\ctl1orcl.ora", "C:\orant\database\ctl2orcl.ora")
db_file_multiblock_read_count = 16
db_block_buffers = 1000
shared_pool_size = 40000000
log_checkpoint_interval = 8000
processes = 100
dml_locks = 200
log_buffer = 32768
sequence_cache_entries = 30
sequence_cache_hash_buckets = 23
#audit_trail = true
#timed_statistics = true
background_dump_dest = C:\orant\rdbms80\trace
user_dump_dest = C:\orant\rdbms80\trace
db_block_size =8192
compatible = 8.0.5.0.0
sort_area_size = 65536
log_checkpoint_timeout = 0
remote_login_passwordfile = shared
max_dump_file_size = 10240
調(diào)整這兩項就行了:
db_block_buffers = 1000
shared_pool_size = 40000000
上個月聽人講過一下,似乎是這樣的:
共享池是shared_pool_size/1024/1024=100M
數(shù)據(jù)池好象是 db_block_size*db_block_buffers*1024*1024=200M(db_block_size是建庫時指定的,好象不能改,只有改db_block_buffers了)。
ORACLE SGA 的分配
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)存段,建議設(shè)大點(diǎn), 達(dá)到最大SGA
shmmin - 最小的共享內(nèi)存段.
shmmni - 共享內(nèi)存標(biāo)志符的數(shù)量.
shmseg - 一個進(jìn)程可分配的最大內(nèi)存段數(shù).
shmall - 最大可允許的內(nèi)存數(shù),比SGA還要大.
semmns - 信號燈,跟ORACLE的PROCESS數(shù)有關(guān).
semmsl - 一個信號燈中最大的信號燈數(shù).
db_block_buffers * block size : shared_pool_size = 2.5:1