Gopi Desaboyina Solaris Blogs

Just another WordPress.com weblog

ORA-04030: out of process memory when trying to allocate 840 bytes (kgsp-heap,kglss)

Recently we fully populated our Sun Fire E2900 from 2 CPU boards to 3 CPU Boards ( 12 Processors & 96 GB RAM).

After that we increased oracle SGA size to more than 12 GB for some of the instances.

Bam..that’s it !!!  They never come up or sometimes they come up and as soon as we issue any sql commands they gets killed. we saw below errors in alert logs

“ORA-04030: out of process memory when trying to allocate 840 bytes (kgsp-heap,kglss)”

Oracle Version is 11.1.0.6

Googling that error which came with link which I helped us and also confirmed from metalink.

based on CPU count and which leads to error.

As per investigation made in these bugs, the issue is caused by the fact that the granule size automatically chosen at startup is too large and we ran out of granules. It is not factored that we may want to subdivide some of the components into multiple chunks (typically based on directly or indirectly on cpu_count). For example: the shared pool may split into multiple subpools and the buffer cache into multiple working sets. Hence we may choose a granule size which is too large to cater for the fact that some of the components may require multiple granules.

 

we’ve fixed the issue by using _ksmg_granule_size=16777216 # ( 16 MB ) in init.ora [OR] as per metalink you could apply the patch 8813366 & 7441663.

See MetaLink Note # 831770.1 for details.

 

Reference Links on Oracle Shared Pool :

http://orainternals.wordpress.com/2009/08/06/ora-4031-and-shared-pool-duration/

http://jhdba.wordpress.com/2009/11/13/problems-with-sga-a-multiiple-of-4gb-and-high-cpu-count/

December 4, 2009 Posted by | Oracle | | 4 Comments