linux 32位和64位系统的oracle SGA调整
发布时间:2007-11-23 00:01:08来源:红联作者:Limits
在REDHAT ADVANCED SERVER2.1上扩展SGA(1.7G以上)
一. 目标:
1. 在一个4G以上的内存的机器上将SGA从1.7G增至2.7G
2. 兼容8.1.7,9.0.1,9.2.0版本的数据库
3. 整个SGA都能够被提高
二. 限制:
1. 只允许在本地启动和关闭数据库
2. 如果为PGA保存的虚拟内存太少就会导致ORA-4030的错误
三. 基本步骤:
1. 查看启动oracle用户的shel的进程号PID
ps -ef或者echo $$
2. 以root用户单独开一个进程,执行:
echo 268435456 > /proc/$PID/mapped_base
这个要对server上所有产生oracle进程的shell
3. 修改shmmax的值。用root用户执行
echo 3000000000 > /proc/sys/shmmax
4. 重新分配SGA
shutdown immediate所有的oracle实例
cd $ORACLE_HOME/lib
cp -a libserver9.a libserver9.a.org(备份liberver9.a文件)
cd $ORACLE_HOME/bin
cp -a oracle oracle.org(备份oracle文件)
cd $ORACLE_HOME/rdbms/lib
genksms -s 0x15000000 > ksms.s
make -f ins_rdbms.mk ksms.o(编译新的sga地址)
make -f ins_rdbms.mk ioracle(重新链接)
这样改过以后就可以支持到2.65G的sga,从而可以提高db_cache_size或者db_block_buffers去提高数据库的缓冲区了。
True64 Unix上使SGA大于2G
1. 检查是否有足够的内存能够分配给SGA
userf -r 300 |grep -i mem
2. 配置核心
vm:
vm-maxvas=实际物理内存
vm-mapentries=400
ubc-minpercent=1
ubc-maxpercent=2
ipc:
shm-max=物理内存或者大于SGA
shm-mni=128
shm-seg=32
proc:
max-per-proc-data-size=物理内存
per-proc-data-size=物理内存
max-per-proc-address-space=物理内存
per-proc-address-space=物理内存
不要修改/etc/sysconfigtab文件中的参数位置。
/sbin/sysconfig -q vm
/sbin/sysconfig -q ipc
/sbin/sysconfig -q proc
3. 设置环境
对于C Shell,修改.login文件
limit datasize unlimited
limit stacksize unlimited
limit memoryuse unlimited
limit addressspace unlimited
对于Korn或者Bourn Shell,修改.login文件
ulimit -d unlimited
ulimit -s unlimited
ulimit -m unlimited
ulimit -v unlimited
4. 重新分配SGA
设置init文件中参数vlm_sga_base_address参数
例如:超过了3G,设置vlm_sga_base_address=0x400000000
5. SWAP区的设置
建议设置成2-3倍的物理内存。