A veces, es necesario verificar todos los directorios en los que se ha montado hugtlbfs. Por lo tanto,
-
encuentra el directorio montado con el comando
mount | grep huge
. -
verifique todos los directorios excepto especialmente
/dev/hugepages
. -
elimine todos los archivos de tamaño 2M. (2M es el tamaño de una página enorme)
Usa ipcs -m
para enumerar los segmentos de memoria compartida. Use ipcrm
para eliminar los segmentos de memoria compartida sobrantes.
Editar el 24/06/2019:Ok, entonces, la respuesta anterior, aunque correcta en la medida de lo posible, fue un poco breve. En particular, si tiene un host con varias instancias de base de datos y solo una falla, ¿cómo puede determinar qué segmentos de memoria (si los hay) deben limpiarse?
Bueno, esto también se puede hacer. Para cada instancia en ejecución, conéctese con / as sysdba
, luego haz oradebug setmypid
(cualquier pid servirá, ya que todos los PID de Oracle se conectan al SGA). Luego haz oradebug ipc
. Eso devolverá (con suerte) IPC information written to the trace file
. Entonces, vaya al directorio udump (o diag_dest) y busque su archivo de rastreo. Contendrá toda la información de IPC para la instancia. Esto incluirá ShmId
. Busque en el archivo los ShmId(s) que utiliza esta instancia. Ahora mira la salida de ipcs -m
.
Cuando haya hecho eso para todas las instancias en ejecución, cualquier segmento de memoria generará ipcs -m
que muestra una asignación de memoria distinta de cero y que no puede tener en cuenta en el oradebug ipc
información de cualquier instancia en ejecución, deben ser los segmentos de memoria sobrantes de la instancia bloqueada. Utilice ipcrm
para eliminarlo/los.
Al hacer esto en un host con múltiples instancias en ejecución, esto puede ser un poco complicado. Proceda con precaución. ¡No desea eliminar el SGA de una instancia en ejecución!
Espero que ayude....