19 May Error ORA-27102 en Solaris 10 cuando si tenemos memoria en el Servidor
Error ORA-27102 en Solaris 10 cuando si tenemos memoria en el Servidor Solaris 10 tiene una funcionalidad de manejar recursos para el usuario, y existen varias comandos para administrarlos, como projadd,projmod, projdel, etc. Esto es importante saber por que, que pasa cuando sabemos que en el servidor si tenemos memoria libre pero cuando tratas de levantar la instancia te encuentras con el siguiente error
DBATEST >startup
ORA-27102: out of memory
SVR4 Error: 22: Invalid argument
Lo primero es asegurarnos que el servidor si tenga la memoria suficiente para poder levantar la instancia, con el comando top, podemos ver esta informacion:
root $ top
load averages: 0.70, 0.71, 0.73; up 39+18:13:12 23:19:17
442 processes: 430 sleeping, 11 stopped, 1 on cpu
CPU states: 99.4% idle, 0.1% user, 0.4% kernel, 0.0% iowait, 0.0% swap
Memory: 32G phys mem, 8024M free mem, 36G total swap, 36G free swap
Como podemos ver, tenemos un poco menos de 8g de memoria libre en nuestro servidor, pero no podemos levantar una instancia con una configuracion de 2g memoria. Lo primero que tenemos que hacer es detectar el id al proyecto que el usuario oracle pertenece
root $ id -p
uid=1001(oracle) gid=110(dba) projid=100(user.oracle)
Una vez que logramos identificar el proyecto al que pertenece nuestro usuario, vamos a verificar los recursos que esta utilizando
root $ prstat -J
.
.
.
PROJID NPROC SWAP RSS MEMORY TIME CPU PROJECT
100 251 14G 13G 42% 37:45:26 0.1% user.oracle
Como podemos ver arriba, el usuario oracle esta usando 13g de la memoria del servidor, ahora vamos a verificar cuanto tiene asignado el proyecto
root $ prctl -n project.max-shm-memory -i project 100
project: 100: user.oracle
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
project.max-shm-memory
privileged 14.0GB - deny -
system 16.0EB max deny -
Ahora que verificamos que el proyecto al que esta asignado nuestro usuario esta restringido hasta los 14g, vamos a incrementarlo para poder levantar la instancia
root $ prctl -n project.max-shm-memory -r -v 16G -i project 100
Volevemos a checar la memoria asignada a nuestro proyecto, y ahora vemos que tenemos un maximo de 16g
root $ prctl -n project.max-shm-memory -i project 100
project: 100: user.oracle
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
project.max-shm-memory
privileged 16.0GB - deny -
system 16.0EB max deny -
Y ahora ya podemos levantar la instancia
DBATEST >startup
ORACLE instance started.
Total System Global Area 2088402944 bytes
Fixed Size 2159904 bytes
Variable Size 1375734496 bytes
Database Buffers 570425344 bytes
Redo Buffers 140083200 bytes
Conclusion
Espero que esta entrada te ayude a comprender el resource manager de Solaris y que te ayude cuando te enfrentes a este tipo de situaciones.
Sorry, the comment form is closed at this time.