近日在优化oracle的时候,遇到了oracle的SGA大小远远大于linux系统共享内存的最大值,以至于当我用ipcs命令查看的时候,oracle的SGA区被分成了10个段,这大大影响的oracle的反应速度。后来经过查阅资料,得出一下简便的修改共享内存的方法,和大家共享。
一般的以为修改系统共享内存需要修改内核程序,然后make,很麻烦。其实,只要在rc.local的加入一点东西,就可以免去修改内核的麻烦。修改方法如下:修改/etc/rc.d/rc.local文件。
在文件的前面注释的后面加入以下行:
#修改内核共享内存大小;
echo 134217728 > /proc/sys/kernel/shmmax;
#说明:这里的值为内存的一半;
#如果系统内存是256M,则值为134217728 ;
#如果系统内存是512M,则值为268435456;
修改完成以后,重起机器就搞定。
linxu默认情况下的共享内存大小好像是32M,我的机器修改前用ipcs查看,oracle分段是10个,修改以后,只有1个。oracle在一个内存分段内,使得数据交换的速度有所提高。