By changing the files on a Oracle database on a server with a Solaris 9 to Solaris 10 and I found myself wanting to get the following error
SQL> startup ORA-27102 : out of
memory SVR4 Error: 22: Invalid argument
as the error message the server has insufficient memory, see the documentation says about $ oerr
ORA 27102 27102, 00000, "out of memory"
/ / * Cause: Out of memory / / * Action: Consult the trace file for details
nothing encouraging picture. Let's review the last recorded in the file $ cat alert.log Fri alert.log
June 5 18:19:45 2009 Starting ORACLE instance (normal) Fri
June 5 18:19:46 2009 WARNING: EINVAL Creating segment of size 0x000000008c400000
fix shm parameters in / etc / system or equivalent Oracle is trying
to create a shared memory segment 2G (depending on the size of SGA / PGA), but the operating system responded with an error message invalid argument (EINVAL). It also shows a small clue to configure
shm in / etc / system
.
Before Solaris 10,
parameter was set shmsys: shminfo_shmmax
in / etc / system
with the maximum size of memory segment that can be created. The default value in Solaris 9 and earlier is 8M, while in Solaris 10 or higher is 1 / 4 of physical memory. You can verify as follows:
$ prtconf size: 2048 Megabytes
$ id -p
uid=110(oracle) gid=201(dba) projid=
3
(default)
$ prctl -n project.max-shm-memory -i project
3
project: 3: default
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
project.max-shm-memory
privileged 479M - deny -
system 16.0EB max deny -
Therein lies the problem, the system is using the default value of 479m in this case, when Oracle is trying to create a segment of memory (2G) greater than 479m.
The solution is to configure the system with a large enough size for the shared memory segment is created and can lift Oracle instance.
In Solaris 9 and earlier, this can be done by adding the following line in fix shm parameters in / etc / system or equivalent Oracle is trying
to create a shared memory segment 2G (depending on the size of SGA / PGA), but the operating system responded with an error message invalid argument (EINVAL). It also shows a small clue to configure
shm in / etc / system
.
Before Solaris 10,
parameter was set shmsys: shminfo_shmmax
in / etc / system
with the maximum size of memory segment that can be created. The default value in Solaris 9 and earlier is 8M, while in Solaris 10 or higher is 1 / 4 of physical memory. You can verify as follows:
$ prtconf size: 2048 Megabytes
$ id -p
uid=110(oracle) gid=201(dba) projid=
3
(default)
$ prctl -n project.max-shm-memory -i project
3
project: 3: default
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
project.max-shm-memory
privileged 479M - deny -
system 16.0EB max deny -
Therein lies the problem, the system is using the default value of 479m in this case, when Oracle is trying to create a segment of memory (2G) greater than 479m.
The solution is to configure the system with a large enough size for the shared memory segment is created and can lift Oracle instance.
/ etc / system
, having to reboot the system to take the new value.
September
parameter in Solaris 10
shminfo_shmmax Sun is obsolete and not recommended to set in
$
0 comments:
Post a Comment