一 问题描述
昨晚修改一个数据库参数,需要重启数据库,才能生效。结果发现数据库起不来了,启动报错:
#查看下sga,pga相关配置
create pfile='自定义路径/init_rac1.ora' from spfile;
less init_rac1.ora,查看sga_target=64G,pga_aggregate_target=32g
以为服务器内存不足,结果执行free -m发现也还有200G内存可用呢,一开始觉得很奇怪。
二 出错原因
kernel.shmmax的值太小,发现根本就没配置这个参数:
kernel.shmmax 用于定义单个共享内存段的最大值,shmmax 设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降 。
Oralce 的建议是希望一个大的共享内存段能容纳整个SGA,这样在任何时候都不会有甚至轻微的性能下降的隐患。
三 解决办法
调大kernel.shmmax的值,使其大于sga_target大小。
vi /etc/sysctl.conf,新增:
kernel.shmmax=70000000000 #这里将其设置为近70G
#使修改生效
sysctl -p
再次启动数据库,不再报错了。