Você está na página 1de 3

Antes de Solaris 10, se configuraba el parámetro shmsys:shminfo_shmmax

en /etc/system con el tamaño máximo de segmento de memoria que puede


crearse. El valor por default en Solaris 9 y versiones anteriores es de 8M;
mientras que en Solaris 10 o superior es 1/4 de la memoria física. Lo puedes
verificar de la siguiente manera:
$ prtconf | grep Mem
Memory 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
-

He ahí el problema, el sistema está usando el valor por default de 479M para
este caso, cuando Oracle está tratando de crear un segmento de memoria
(2G) mayor a 479M.

La solución es configurar el sistema con un tamaño suficientemente grande


para que el segmento de memoria compartida sea creado y Oracle pueda
levantar la instancia.

En Solaris 9 y versiones anteriores, esto puede hacerse agregando la siguiente


línea en /etc/system, teniendo que reiniciar el sistema para que tome el
nuevo valor.
set shminfo_shmmax = 0x000000008c400000

En Solaris 10 el parámetro shminfo_shmmax es obsoleto y Sun no


recomienda configurarlo en /etc/system aún a pesar de que funcione como
se espera.

En Solaris 10 y posterior, este valor puede cambiarse dinámicamente por


proyecto con la ayuda de los servicios de control de recursos. Así es como se
hace en Solaris 10 y posterior
$ prctl -n project.max-shm-memory -r -v 2G -i project 3
$ prctl -n project.max-shm-memory -i project 3
NAME PRIVILEGE VALUE FLAG ACTION
RECIPIENT
project.max-shm-memory
privileged 2.0G - deny
-
system 16.0EB max deny
-

Todos los cambios hechos con el comando prctl se aplican al sistema de


manera temporal por lo que se perderán cuando se reinicie. Para hacerlo
permanente, crea un proyecto con el comando projadd
$ projadd -p 200 -c 'Oracle config' -U oracle -G dba -K
'project.max-shm-memory=(privileged,2G,deny)' oracle
Finalmente cerciórate que fue creado con el comando projects -l ó
cat /etc/project
$ projects -l
...
...
oracle
projid : 200
comment: "Oracle config"
users : oracle
groups : dba
attribs: project.max-shm-memory=(priv,2147483648,deny)
$ cat /etc/project
...
...
oracle:200:Oracle config:oracle:dba:project.max-shm-
memory=(priv,2147483648,deny)

Con estos cambios, Oracle debería arrancar la base de datos de manera


normal.
SQL> startup
ORACLE instance started.

Total System Global Area 2333054160 bytes


Fixed Size 734416 bytes
Variable Size 1191182336 bytes
Database Buffers 1073741824 bytes
Redo Buffers 67395584 bytes
Database mounted.
Database opened.

Otro caso que puede presentar el mismo síntoma es cuando aumentas la SGA
en la instancia resultado posiblemente de un tuning el cual si es mayor al
segmento de memoria configurada para el sistema, cuando intentes levantar
la instancia tendrá este mismo comportamiento.

_______________________________

"If you want to set


it up for a specific user:

shmem="4095MB"

projadd user.${user}
projmod -sK "project.max-shm-memory=(priv,${shmem},deny)"
user.${user}

"ndd /dev/tcp" to find the current ones. What's written here is still valid for Solaris
10.
The parameters that I'm setting currently on some servers are :
Quote:

set msgsys:msginfo_msgmax = 65535


set msgsys:msginfo_msgmnb = 65535
set msgsys:msginfo_msgmni = 7168
set msgsys:msginfo_msgtql = 7168
set msgsys:msginfo_msgssz = 16
set msgsys:msginfo_msgseg = 32767

set semsys:seminfo_semmni = 8192


set semsys:seminfo_semmns = 17204
set semsys:seminfo_semmnu = 8192
set semsys:seminfo_semume = 240
set semsys:seminfo_semmap = 1026
set semsys:seminfo_semopm = 200
set semsys:seminfo_semmsl = 200
set semsys:seminfo_semvmx = 32767

set semsys:seminfo_semmap = 1026


set semsys:seminfo_semopm = 200
set shmsys:shminfo_shmmax = 30074587545
set shmsys:shminfo_shmmax = 15037293773
set shmsys:shminfo_shmmni = 8192
set shmsys:shminfo_shmseg = 240
set shmsys:shminfo_shmmin = 1

set rlim_fd_cur=1024
set rlim_fd_max=34000

Você também pode gostar