1835927 Members
2585 Online
110088 Solutions
New Discussion

Re: shmmax

 

shmmax

I have a K260 with 640M memory, 1.8gb swap running HP-UX 11.00. ORACLE recommend shmmax to be set to 4294967295 on trying to set this the system allowed a max of 1073741824. I found a reference to disabling the limit by setting it to 0x7fffffff. What effect would this have? Is there a way to set it to 4294967295 as ORACLE request?
8 REPLIES 8
Pete Randall
Outstanding Contributor

Re: shmmax

harry d brown jr
Honored Contributor

Re: shmmax

David,

Are you running 11.00 in 32 bit mode or 64 bit mode?

live free or die
harry
Live Free or Die

Re: shmmax

I'll check the thread Pete has suggested - I am running 32bit
Pete Randall
Outstanding Contributor

Re: shmmax

David,

Actually, there's lots of threads about shmmax - that was just the first I saw that looked like it addressed your situation. You might want to try a forums search with something like +shmmax +oracle +32bit and peruse the results.

Good luck,
Pete

Pete

Re: shmmax

It doesn't look like my reply has been added so... I am running 32bit. I will check the link Pete has mentioned.
S.K. Chan
Honored Contributor

Re: shmmax

From the "pointers" you should have known by now the limit you have is 1GB (shmmax for 11.0 32bits). If shmmax is set to a value beyond that (exceeds the architecture limit of a 32bit system), it will not cause any problem, however on a 11.00 machine the value of shammax depends on what is required by the apps and if you set it to be more than the max allowable value you risk having a process erronously trying to allocate a huge segment and consume all available swap space and later only to be denied the request for more resource.




Bill Hassell
Honored Contributor

Re: shmmax

shmmax is just a fence and other than SAM or the kernel-builder placing some sanity checks on it, you could make it very large. However, Oracle (and any other programs) can never make a successful call to request a shared memory segment larger than apx. 1Gb. This is an inherent limitation of 32bit programs.

Not only is there a 1Gb limit but the shared memory area is also shared with many other items such as shared libraries and other programs. the 32bit memory map allows for only one shared memory map so it will eventually become fragmented and you may not even succeed with a 500meg segment.

The only workaround is memory windows in which separate 32bit spaces are created in separate maps, thus avoiding fragmentation from other usage in the default space. You should get a copy of shminfo so you (and your DBAs) can see the fragmentation:

ftp://contrib:9unsupp8@hprc.external.hp.com/sysadmin/programs/shminfo/

Be sure to fix your copy of Internet Explorer so it does *NOT* display folders using ftp (well-known bug), or just use plain old ftp to pull down the files.

HOWEVER: 640megs is seriously too small to run Oracle unless you (and your users) have a lot of spare time on their hands. Virtually everything that Oracle will want to do will require swapping, about a 100:1 to 1000:1 performance penalty. You should start with 2000megs and really look at 4000megs, especially when you decide to change the opsystem to a 64bit kernel.


Bill Hassell, sysadmin
Shannon Petry
Honored Contributor

Re: shmmax

As a rule, use 80% of your total memory for schmmax.
Oracle recommends the kernel maximum(they assume you maxed system to run Oracle I guess), which will not apply in your case.
While there is no harm in making it bigger because you can only allocate what the system has, I always try to retain 20% for other processes.

Regards,
Shannon
Microsoft. When do you want a virus today?