Tuesday, September 18, 2007

Getting ready for 11g, how's your /dev/shm?

WOW I'm busy! Thats a good thing but it sure slows down my blog posting. I apologize for that. I've been working on my latest rant essay to post here, but it's not done yet, and I really should do something Oracle 11g related, so here it is!

As you may know, 11g now manages both the SGA and the PGA automatically though some new parameters, memory_size and memory_max_size.

Memory_size replaces sga_size and pga_aggregate_target, combining the two into one memory pool for Oracle to manage (well, not really one big memory pool, they are still separate, but Oracle deals with all the details under the covers).

Memory_max_size is roughly like sga_max_size + pga_aggregate_target, gobbling up memory for future use should you use it.

So, why the comment about /dev/shm? If you are going to move to 11g's flavor of memory management on Linux, then you might run into this little error:

ORA-00845: MEMORY_TARGET not supported on this system

and you might say to yourself, "Wow, that stinks, I can't use memory_target on Linux."

Well, thats not quite the case. In fact, the problem is likely that /dev/shm is not configured big enough. You will get this error if /dev/shm is not configured large enough to handle the memory you are allocating with memory_target. So, if you are planning on using these new features, be preparing now and increase the size if /dev/shm.

More on this and many other topics in my new Oracle Database 11g New Features book which is available for pre-sales now on Amazon.com. It will be out VERY SOON!!!


Virag Sharma said...

As per Metalink doc 317141.1 , if you using VLM using /dev/shm , you can't use SGA_TARGET. I THINK ( my guess only ) similar true for MEMORY_TARGET too.

Robert Freeman said...

You are correct. Use of VLM (using the parameter use_indirect_data_buffers) is mutually exclusive of sga_target or memory_target. Use of VLM will require that /dev/shm be sized to support the memory requirements if you have use_indirect_data_buffers set.

However, if you are using memory_target, you will not be setting use_indirect_data_buffers. /dev/shm must STILL be configured to the amount of space required.

I'm actually not sure what the difference is at this point between VLM and it's use of /dev/shm and memory_target and it's use.

Maybe someone else knows?

Robert Freeman said...

Tanel Poder has some additional information on this topic on his blog. Surf over to:


And check it out! Great work Tanel!


Zaffer Khan said...

Hi Robert,

That's great stuff on 11g shm.

If you configure Oracle 10g on Windows 2003 Ent. Edition, you will have to enable /PAE for more than 4GB available memory, and Oracle Parameters use_indirect_buffers and db_block_buffers need to be added to take adavantage of VLM.

My query is that in 11g, do we need to follow the same procedure or is it any different?

Zaffer Khan

Subscribe in a reader