6f429244e498457b8400e72e4af683b0 Alberto Blog: ORA-04030: out of process memory when trying to allocate 16396 bytes (koh-kghu sessi,pmucalm coll)

lunedì 22 aprile 2013

ORA-04030: out of process memory when trying to allocate 16396 bytes (koh-kghu sessi,pmucalm coll)

Problematica diffusa quando si ha una procedura PL/SQL o Packages che divorano memoria.
Nel mio caso lanciando un package di archiviazione di un software mi sono imbattuto in questo errore in una virtual machine Windows 2003 32bit con 3 GB di RAM, Oracle 10G R2.
Questo argomento è descritto anche nel doc Metalink ID 1325100.1.
Nel Metalink fanno eseguire un trace dove nel dump si vede benissimo che è un problema di allocazione di memoria.
Il_realfree_heap_pagesize_hint nella 10g fa sì che il processo di  private memory (PGA) usi pagine di allocazione più grandi, riducendo così TLB/TSB.
In questo caso occorre controllare due parametri nell'instanza:_use_realfree_heap e _realfree_heap_pagesize_hint che sono impostati per default.


select i.ksppinm name , v.ksppstvl cur_val,

v.ksppstdf default_val, v.ksppstvf

from x$ksppi i, x$ksppcv v

where i.indx = v.indx

and i.ksppinm in ('_realfree_heap_pagesize_hint', '_use_realfree_heap')



NAME                                     CUR_VAL    DEFAULT_V   KSPPSTVF

—————————————- ———- ——— ———-

_realfree_heap_pagesize_hint             65536      TRUE               0

_use_realfree_heap                       TRUE       TRUE               0



A questo punto provvedo a modificare solo il _realfree_heap_pagesize_hint :


alter system set "_realfree_heap_pagesize_hint" = 262144 scope=spfile;


e riavviare il db.

Una volta riavviato controllo se ha preso il nuovo parametro sempre con:

select i.ksppinm name , v.ksppstvl cur_val,

v.ksppstdf default_val, v.ksppstvf

from x$ksppi i, x$ksppcv v

where i.indx = v.indx

and i.ksppinm in ('_realfree_heap_pagesize_hint', '_use_realfree_heap')



NAME                                     CUR_VAL    DEFAULT_V   KSPPSTVF

—————————————- ———- ——— ———-

_realfree_heap_pagesize_hint             262144     TRUE               0

_use_realfree_heap                       TRUE       TRUE               0



Ci sono moltissimi esempi tra l'altro ben documentati, per quanto riguarda macchine ovviamente Solaris o Linux, ma in ambiente Windows purtroppo non ho trovato quasi nulla.

Aspetto feedback....

Nessun commento:

Posta un commento