某天机器由于断电+UPS 供电不足重启后,发现监听器启不起来了,提示错误:
TNSLSNR for Linux: Version 10.2.0.1.0 - Production
System parameter file is /home/Oracle/product/10.2.0/db_1/network/admin/listener.ora
Log messages written to /home/oracle/product/10.2.0/db_1/network/log/listener.log
Error listening on: (ADDRESS=(PROTOCOL=ipc)(PARTIAL=yes)(QUEUESIZE=1))
No longer listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
TNS-12549: TNS:operating system resource quota exceeded
TNS-12560: TNS:protocol adapter error
TNS-00519: Operating system resource quota exceeded
Linux Error: 28: No space left on device
检查磁盘空间 df -h 仍然是有空间可以使用的
奇怪,同时df -i 检查了一下 inodes 使用情况,很吃惊,/var 目录下 inodes 全部耗尽了
[oracle@newadm log]$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 131616 22831 108785 18% /
/dev/sda1 26104 52 26052 1% /boot
/dev/sda8 3384864 288966 3095898 9% /home
none 258627 1 258626 1% /dev/shm
/dev/sda6 131616 29 131587 1% /tmp
/dev/sda5 393600 64042 329558 17% /usr
/dev/sda7 131616 131615 1 100% /var
联系SA检查 /var 目录下 inodes 耗尽的原因,并删除那些小文件后,监听器正常启动了
之后参考 eygle 的文章,检查了一下,发现监听器启动的时候,在 /var/tmp/.oracle 目录下生成了两个临时文件,所以当 /var 目录下的 Inodes 耗尽的时候,监听器无法启动。