linux 32位和64位系统的oracle SGA调整

在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倍的物理内存。