您的位置:首页 > 数据库 > Oracle

一个oracle同时开启多个实例,解决 out of memory问题

2017-11-27 09:21 591 查看
 在64位linux下使用64位版本的oracle,即使把shmmax参数的大小设置系统可用内存的一半,  
当把SGA增加到接近一半的系统内存时候,当startup实例的时候,可能得到以下错误  

SQL> startup nomount  
ORA-27102: out of memory  
Linux-x86_64 Error: 28: No space left on device  
Changes  
shmall is too small, most likely is set to the default setting of 2097152  
$ cat /proc/sys/kernel/shmall  
2097152  
shmall is the total amount of shared memory, in pages, that the system can use at one time.   
shmall是系统在所有页同一时间使用的共享内存段的总数  

解决办法  :
设定shmall的值为等同于在系统中所有SGA占用内存大小除以分页大小的得出的最后的值  
用以下命令得到分页的大小  
$ getconf PAGE_SIZE   
4096  
例如,如果系统中所有SGA的综合为16Gb,然后getconf PAGE_SIZE 得出的结果是4096(4k)  
那么shmall就设定为4194304页  
用root用户在/etc/sysctl.conf 文件中设定shmall为 4194304  
kernel.shmall = 4194304  
设定后执行以下命令  
$ sysctl -p  
$ cat /proc/sys/kernel/shmall  
4194304  
以上命令无须重启  
切换到oracle用户,重新执行startup命令  
修改/etc/sysctl.conf 是一个永久的解决办法(适用于开机时间) 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: