2 zhouxiaozhxi zhouxiaozhxi 于 2014.04.28 10:10 提问

ORA-04030:在尝试分配8192字节(sort subheap,sort key)时进程内存不足

先来描述一下我的环境吧:window 32bit, oracle9i,session和process的数量在正常时100左右,OS内存以前是2G,现在加到了8G,系统在4月1号之前已经正常运行2年之久,没出过啥大问题,从4月1日愚人节开始,每天必down。
alert日志中见到最多的就是ORA-04030错误,而且一般伴随着
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn 信息
在出问题的时段监听日志listener.log:
TNS-12560: TNS: 协议适配器错误
TNS-00530: 协议适配器错误
32-bit Windows Error: 54: Unknown error
TNS-12500: TNS:监听器未能启动专用的服务器进程
TNS-12540: TNS:超出内部极限限制
TNS-12560: TNS: 协议适配器错误
TNS-00510: 超出内部极限限制
32-bit Windows Error: 8: Exec format error

在外面的表现来看,就是将要出问题之前,新的连接进不去,但已建立的连接可以继续操作,但也只能做小数据量查询。网上查的资料都说是系统资源不足,特别是内存,后来内存从2G加到8G,对应也调整了PGA和SGA大小,但问题依然出现,每个4-5小时就出现PL/SQL连接不进去:
ORA-04030: out of process memory when trying to allocate 33292 bytes (pga heap,……
每次只需要重启windows上的oracle实例服务就好了。后来通过process explorer线程查看工具偶然发现,每4-5个小时的时间内,ORACLE.EXE进程下的线程从100一直网上涨,大概到980左右就挂了,然而在SQL里查出来的线程(包括后台进程)一直都是比较正常的数值100左右,不知道操作系统哪里还有oracle的资源没有释放,也统计了oracle即将出问题的时候(oralce.exe进程内存从200M涨到最高值580M),这些看起来比较正常的100来个sessiond的PGA/SGA占用,都比较正常。
不知道是否有人遇到过类似的问题,因为应用是买的,所以从32位改成64位需要重新部署引用,实施费用公司肯定是不同意的。正考虑从9i升级到10g,但依然没有把握。究竟是什么问题呢?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!