【拖雷】一则ORA-12500错误的解决案例

本文介绍了一个生产环境中出现的Oracle连接失败问题,通过调整AIX系统参数maxpin%,解决了因内部内存限制导致的Ora-12500错误。文章详细分析了AIX5.3版本中内存管理机制的变化及其对系统性能的影响。
摘要由CSDN通过智能技术生成

环境:

OS:AIX 5.3
$oslevel -s
5300-06-04-0748
DB:Oracle 9206

我们的一台生产环境,突然系统监测到大量的连接失败,通过监听的日志,可以发现部分连接是成功的,部分连接是失败的。如

成功的连接

14-APR-2008 21:08:31 * (connect_data=(service_name=feel)(server=dedicated)(CID=(PROGRAM=java)(HOST=shop48.cm2)(USER=admin))) * (ADDR
ESS=(PROTOCOL=tcp)(HOST=172.19.26.48)(PORT=49288)) * establish * feel * 0

失败的连接

14-APR-2008 21:08:31 * (connect_data=(service_name=feel)(server=dedicated)(CID=(PROGRAM=java)(HOST=app131)(USER=admin))) * (ADDRESS=
(PROTOCOL=tcp)(HOST=192.168.60.131)(PORT=55076)) * establish * feel * 12500
TNS-12500: TNS:listener failed to start a dedicated server process
TNS-12540: TNS:internal limit restriction exceeded
TNS-12560: TNS:protocol adapter error
TNS-00510: Internal limit restriction exceeded
IBM/AIX RISC System/6000 Error: 12: Not enough space

失败的连接反馈给前端的错误是Ora-12500错误,系统级别的错误是internal limit restriction exceeded,以及错误12:Not enough space。通常,AIX的错误12都是指内存不够,但是这个系统的总内存是64G,还存在大量剩余空间,交换空间的使用率也不超过2%。
开始以为是连接数与文件句柄的限制,但是修改了系统参数maxuproc(每用户的最大进程限制)从2000到5000(系统当时实际使用的进程数小于1000个),用户文件句柄限制ofiles(descriptors)从4000到5000,都没有效果。
根据错误类型12,还是把问题定位在内存上面,查看SGA大小,占了45G,约系统总内存的70%,加上系统自身要消耗10%的内存,合计80%的内存,这部分内存是不能交换的,而OS的系统参数maxpin%正好默认是80%,修改maxpin%到90%,问题解决,所有的连接正常。
正常情况下,系统的内存分计算内存与非计算内存(如文件系统cache),SGA与系统的这部分内存都属于计算内存,在AIX的早期版本(如Aix 5.2),如果内存不够,这部分内存是可以交换的,但是后期的版本,如Aix 5.3以后,因为large page的引进,这部分内存是长驻内存而不能交换的(不知道是进步还是退步)。所以,当这部分内存达到maxpin%的时候,就会发生内存不够,如果超出,就会发生系统hang住,所有的连接都无法进入,我们的这个实际案例是幸运的,只是在临界点附近颠簸,并没有引起系统的瘫痪。
修改maxpin%是一个解决方法,但同时也要注意maxperm%,maxclient%与minperm%的正确设置,以及其它内存的使用,因为除了系统以及SGA之外,还有进程空间(进程使用内存,有一部分是可交换的,有一部分也是属于系统级别,不可交换的),以及文件系统Cache,设置lru_file_repage=0,可以保证在minperm%之上,优先交换非计算内存。
至于刚上线的时候是正常的,为什么运行一段时间以后才不正常,可能是因为连接数的增加,导致系统消耗以及内存增加,慢慢的达到了临界点。

<!--

--EOF--

Trackback:http://rdc.taobao.com/blog/dba/html/131_oracle-aix-error-12500.html/trackback

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/1384/viewspace-237977/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/1384/viewspace-237977/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值