Hi @Mark Barinstein
Thanks for your feedback..
So, OUCH! this is really, really bad. I thought the util_heap_sz when set to a fixed size was pre-allocated and pinned memory, so it can be used when needed..
Utility heap is a very important memory heap. I never thought it would be allocated dynamically like this. This is so undesirable.
You have a big pool (db-memory) and several inner heaps compeeting each other from that.. several set to automatic, it's logical that they will become fragmented over the time. and now, one particular heap requires contiguous segments.. and it can't work, even haven available memory (set ) to it.. I've fixed util_heap to a big size, exactly to avoid this situation. I want be able to take backups. reorgs, runstats, etc .. without problems..
Yes, I have a big up time, but not that big (240 days only) .. and the intention is to keep the database up as much as possible.
Now, being forced to deactivate the db just to be able to take an ONLINE backup is very bad !!
Isn't there any special register that I can set that will instruct db2 engine to pre-allocate all utlity_heap at db activation time and never free it up ?
About setting database_memory back to automatic.. it was like that in the past.. but we also failed the same problem, and with db_mem set to auto, it worst, as the time passes, the overall memory utilization increases reaching up to a point of using all system memory.. (STMM is enabled. for BPS, sorts, etc.. )
Then the side effect is worst, as the OS becomes unresponsive due lack of free memory.. I won't enable db_memory back to auto,, it was worst with that..
IBM should review this approach of allocating util_heap on demmand.. or at least give us an option to control that by using a register variable.