Oracle数据库listener 启动时提示 No space left on device


某天机器由于断电+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 耗尽的时候,监听器无法启动。

相关内容