ORA-04030 out of memory

客户现场的数据库报错了,一个b/s结构的web系统,在夜间跑一个batch任务的时候报错退出,job失败一般reload一下就行了,对前台的客户倒是影响也不大。
ORA-04030: out of process memory when trying to allocate 24 bytes (top call heap,PGA heap pool)
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn
skgpspawn failed:category = 27143, depinfo = 9261, op = spdcr, loc = skgpspawn

win32 4G ram,oracle 9201,530M的pga,sga_max_size给了1.5G。当然了,9i下面,sga的使用是在各个pool中定义的。sga_max_size是db_cache,share_pool等等能够调节之后,使用的最大值。一般来说,db_cache_size+share pool之后会小于这个值。遇到这个报错多半是os上的资源不足够了。win32bit下面,user process能够使用的最大内存<2G,这里的user process是除了系统进程以外的所有程序进程,可以理解为:除了系统以外,其余非系统进程所能使用的。当然,oracle.exe肯定是其中之一而已。有人说开启os上的PAE,/3G设置能够解决此问题。我觉得仅仅能缓解而已。如果pga确实满足不了app,os上还是会陆续的报错,类似"unable to begin xxx thread"之类的。解决方法?建议更换成64bit的吧。或者缩小pga..试试。