Apr 25, 2016

Usando lsof de linux para encontrar espacio que se está usando y no ha sido liberado


Hace poco me encontré un cliente en dónde el directorio ORACLE_HOME estaba llegando al 100% lo que trajó muchos problemas para permitir nuevas conexiones a la base de datos. El tema es que es comencé a revisar todos los archivos que más espacio utilizaba la base de datos y me encontré con que de los 100Gb de espacio que tenía el  disco dónde se encontraba el ORACLE_HOME, el  espacio real que consumía dicho directorio era apenas de 4.5 GB, lo que me trajo la siguiente duda: ¿Quién estaba usando todo el espacio restante, y porqué tampoco había evidencia de más espacio utilizado?

Evidencias:
[fdonoso@fperpprd ~]# df -h /oracle/FSP
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/oraclevg-lvorafsp
                      109G  109G 104K      100% /oracle/FSP


Esa era la evidencia del espacio utilizado al momento de revisar. Luego de dar mucha vuelta al tema, decidí recurrir a la herramienta lsof para visualizar aquellos archivos que estaban siendo utilizados por algún proceso en particular.

Como mi ORACLE_HOME estaba en la ruta /oracle/FSP decidí ejecutar el siguiente comando para ver si había un archivo que aún estaba ocupando espacio y encontré lo siguiente:

lsof | grep FSP | sort -n -k 7 | tail -n 10
COMMAND     PID      USER   FD      TYPE             DEVICE     SIZE/OFF     NODE NAME
oracle    13594    orafsp  txt       REG             253,26    228882030     5473 /oracle/FSP/11202/bin/oracle
oracle    13596    orafsp  txt       REG             253,26    228882030     5473 /oracle/FSP/11202/bin/oracle
oracle    13598    orafsp  txt       REG             253,26    228882030     5473 /oracle/FSP/11202/bin/oracle
oracle    13600    orafsp  txt       REG             253,26    228882030     5473 /oracle/FSP/11202/bin/oracle
oracle    13602    orafsp  txt       REG             253,26    228882030     5473 /oracle/FSP/11202/bin/oracle
oracle    13604    orafsp  txt       REG             253,26    228882030     5473 /oracle/FSP/11202/bin/oracle
oracle    13606    orafsp  txt       REG             253,26    228882030     5473 /oracle/FSP/11202/bin/oracle
oracle    13608    orafsp  txt       REG             253,26    228882030     5473 /oracle/FSP/11202/bin/oracle
rman      10978    orafsp    1w      REG             253,26 105508769792    13988 /oracle/FSP/nohup.out (deleted)

Pongan atención en la última línea, ahí encontré que hay un archivo  /oracle/FSP/nohup.out de más de 100GB de tamaño el cual fue borrado, pero que estaba siendo usado por un proceso rman 10978 que aún seguia activo. Por lo que el espacio aún estaba reservado a pesar que alguién lo intento borrar.

Por la urgencia del problema y dado que el cliente no tenía conexión a su ambiente productivo no me quedó otra alternativa que matar al proceso rman padre (luego a los días después me enteré que habían tirado un backup de una base de datos con la opción de trace, aún no sé porque generó tanto trace un proceso de respaldo, pero bueno : /   ...)

Evidencias
orafsp> ps -fea | grep -i 10978
orafsp   10978     1 60 Apr18 ?        1-16:15:13 rman
orafsp> kill -9 10978
 
Ahora apareció el problema del espacio liberado:
[fdonoso@fperpprd ~]# df -h /oracle/FSP
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/oraclevg-lvorafsp
                      109G  4.6G   99G   5% /oracle/FSP
 
Espero que haya sido útil.

No comments:

Post a Comment