昨天接到现场工程师求助,说生产系统很多客户端报告"ora-12518:监听程序无法分发客户机连接",希望能协助解决。
ora-12518错误通常是由于以下的原因造成:
1.数据库的processes、sessions达到上限,数据库无法启动更多服务进程响应客户端登录请求。
2.pga达到上限,数据库无法分配内存资源响应客户端登录请求。
3.windows上32位oracle是一个进程,oracle的进程其实是线程。32位oracle设置了最大内存为1.7G。这也是sga不能超过1.7G的关键因素。(也可以通过调整注册表、隐含参数等打破这一限制)
但是,Oracle作为运行在操作系统上的软件,操作系统的性能限制也会影响到oracle。
下面描述昨天现场的情况:
1.processes参数被设置为1000,sessions参数被设置为1105
2.发生ora-12518报告时,select count(*) from v$process;select count(*) from v$session;结果都只有100多
3.与通常见到的ora-12518持续不断相比,这次报ora-12518是间歇性的
4.数据库默认连接模式是专用连接
5.查看sga、pga。 sga分配了1G多点,pga分配了800M
分析上面的情况看最大的可能就是由于sga、pga分配内存过多引起的。现场工程师说原来sga是584M,出问题后他认为是sga偏小造成的,所以就调大了sga、pga。根据这一情况,建议他把sga改为500M,pga改回原值,并重启数据库使参数生效。重启后不再出现ora-12518报错。
但是32位数据库上硬件的性能得不到发挥,实在可惜。建议还是换64位的oracle。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24771067/viewspace-775006/
,如需转载,请注明出处,否则将追究法律责任。