Vincent.Chan‘s Blog

常用链接

统计

积分与排名

网站

最新评论

Oracle内存分配

怎样改为:使用 300M 内存,100M 共享池,200M数据池?
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


调整这两项就行了:
db_block_buffers = 1000
shared_pool_size = 40000000


上个月听人讲过一下,似乎是这样的:
共享池是shared_pool_size/1024/1024=100M
数据池好象是 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系统物理内存的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 - 共享内存段,建议设大点, 达到最大SGA
shmmin - 最小的共享内存段.
shmmni - 共享内存标志符的数量.
shmseg - 一个进程可分配的最大内存段数.
shmall - 最大可允许的内存数,比SGA还要大.
semmns - 信号灯,跟ORACLE的PROCESS数有关.
semmsl - 一个信号灯中最大的信号灯数.


db_block_buffers * block size : shared_pool_size = 2.5:1

posted on 2006-04-13 23:56 Vincent.Chen 阅读(370) 评论(0)  编辑  收藏 所属分类: Database


只有注册用户登录后才能发表评论。


网站导航: