250 32000 32 128
其中, 250 是参数SEMMSL的值,32000是参数SEMMNS的值, 32是参数SEMOPM的值,而128则是参数SEMMNI的值。250*128=32000
如何获得当前正在使用的信号量
How can I determine how many semaphores are currently being utilized? ----------------------------------------------------------------------------------
On most Unix systems, current semaphore allocation can be displayed with the OS command 'ipcs -s'. % ipcs -s
While good to know, this command is seldom used as part of troubleshooting semaphore errors.
SHARED MEMORY
================================================== OS如何分配共享内存段
How is shared memory allocated by the OS?
----------------------------------------------------------------------------------
This process varies slightly depending on Unix platform, but the basic premise is this:
An application requests a given amount of contiguous shared memory from the OS. The OS dictates how large of a shared memory segment it will allow with the kernel parameter SHMMAX(Shared Memory Maximum). If the amount of shared memory requested by the application is greater than SHMMAX, the OS may be granted the shared memory in multiple segments. Ideally, however, you want the amount requested by the application to be less than SHMMAX so that the application's request can be fulfilled with one shared memory segment.
SHMMAX和SGA的关系
How does SHMMAX relate to my SGA?
----------------------------------------------------------------------------------
Since the SGA is comprised of shared memory, SHMMAX can potentially limit how large your SGA can be and/or prevent your instance from starting.
What limits the size of my SGA?
----------------------------------------------------------------------------------
In no particular order.
5. The amount of Physical Memory and Swap space available on your system. 6. The kernel paramater SHMMAX.
7. Other OS specific limitations on shared memory.
Memory SHMMAX OS Limits +----------+ +----------+ +----------+ | | | | | | +------+ | | | | | | | S | | | | | | | > | G | | | | | | | | A | | | | | | | +------+
+----------+ +----------+ +----------+
Some OS specific limitations are discussed in the following documents:
\
Additionallly:
HP-UX: [NOTE:77310.1] HP-UX Large SGA support for HP, Memory Windows [NOTE:69119.1] HP-UX SGA Sizing Issues on HP-UX
Solaris: [NOTE:61896.1] SOLARIS: SGA size, sgabeg attach address and Sun
与共享内存当相关的错误
What kind of ORA errors are related to shared memory?
----------------------------------------------------------------------------------
Error Messages referencing a 'SHMM****' function are related to shared memory.
ORA-7306, ORA-7336, ORA-7329, ORA-7307, ORA-7337, ORA-7320, ORA-7329, ORA-7334
VERY COMMON IN 8i: ORA-27100 \ ORA-27102 \
ORA-27125 \removed\
ORA-27123 \
[NOTE:115753.1] UNIX Resolving the ORA-27123 error
[NOTE:1028623.6] SUN SOLARIS: HOW TO RELOCATE THE SGA
如何设置SHMMAX
What should I set 'shmmax' to?
----------------------------------------------------------------------------------
On some Unix platforms, the Install Guide recommends specific values. Previous versions of the Install Guide recommended setting SHMMAX to .5 *(physical memory present in machine). Most recently it's been suggested SHMMAX be set to 4294967295 (4GB). This may not seem appropriate, particularly if the system has considerably less physical memory available, but it does prevent you from having to modify your system kernel everytime a new instance is created or additional physical memory is added to the system. Remember that SHMMAX is a high water mark, meaning that the OS will attempt to allow up to that amount for an application.
解决缺少共享内存段的问题
Quick fix for resolving lack of shared memory errors:
-----------------------------------------------------------------------------------
NOTE: If you have never configured your OS kernel for shared memory, you cannot employ this 'Quick Fix'. You will have to first configure the OS kernel. The amount of shared memory Oracle requests is roughly equal to the size of the SGA. The first and most simple fix is to modify the init.ora to reduce the amount of shared memory Oracle will try to grab at instance startup.
This document lists the init.ora parameters that contribute to the size of the SGA:
[NOTE:1008866.6] HOW TO DETERMINE SGA SIZE (8.0, 8i, 7.x)
oracle崩溃之后重新启动失败的问题
My instance crashed. When I try to restart it, I receive errors related to shared
memory. What should I do?
----------------------------------------------------------------------------------- This may indicate that the shared memory segment associated with the SGA of the crashed instance is still in memory. In this case it may be appropriate to manually remove the segment using OS commands.
THIS PROCESS SHOULD NOT BE ATTEMPTED UNLESS YOU FULLY UNDERSTAND THE CONCEPTS BEHIND IT!!!
The basic steps are:
1. Identify the shared memory segment that is 'stuck' in memory.
2. Remove the 'stuck' shared memory segment using the OS command 'ipcrm'.
[NOTE:68281.1] DETERMINING WHICH INSTANCE OWNS WHICH SHARED MEMORY & SEMAPHORE SEGMENTS
[NOTE:69642.1] also describes this process - Step 9.
[NOTE:123322.1] SYSRESV UTILITY: This note describes the new 8i 'sysresv' utility that can be used on Solaris to associate a given ORACLE_SID with it's shared memory segment(s). .
--------------------------------------------------------------------------------