2009-12-10

ora-04030 out of process memory when trying to allocate 123404 b

ora-04030 
out of process memory when trying to allocate 123404 bytes (hash-join subh,kllcqas:kllsltba)

今天在对一个900多列的表进行select的时候,报了这个一个错误。
查了一下网上的资料,发现很多人建议是减小sga,pag。
事实证明是无效的。
查找metalink,发现是aix系统对oracle的资源限制问题。
奇怪的是oracle安装文档上并没有该参数的设置。

The error in this case is an AIX platform specific issue and it occurs because of an OS resource limitation.
Increase the kernel parameter MAXUPROC to 8192 and restart the listener.
The OS commands in order to find the current maxuproc value and change it :
-Display:   lsattr -E -l sys0 -a maxuproc
-Change:    chdev -l sys0 -a maxuproc=NewValue

 Change takes effect immediately and is preserved over boot.If value is reduced, then it goes into effect only after a system boot.

1.用root权限登录
2.查看现有maxuproc参数:
  lsattr -E -l sys0 -a maxuproc
3.修改maxuproc为8192:
  chdev -l sys0 -a maxuproc=8192
4.su到oracle用户:
  su - oracle
5.重启oracle的监听:
  lsnrctl stop
  lsnrctl start