- 在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 是一个永久的解决办法(适用于开机时间)
一个oracle同时开启多个实例,解决 out of memory问题
最新推荐文章于 2021-09-20 22:16:40 发布