ショコラ
Oracle のデータベースサーバーで「-bash: cannot create temp file for here-document: No space left on device」のエラーが表示された
HDD の空き容量があるのに、このエラーがでるパターンは「i-node の残りが無くなった」かもしれません。
もっさん先輩
まずは、以下のコマンドで i-node の残りがあるか調べてみましょう。
df -i
現在、↓こんな状態でした。
# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 998439 378 998061 1% /dev
tmpfs 1001041 1 1001040 1% /dev/shm
tmpfs 1001041 1276 999765 1% /run
tmpfs 1001041 16 1001025 1% /sys/fs/cgroup
/dev/vda2 6553600 6553600 0 100% /
tmpfs 1001041 13 1001028 1% /run/user/0
ルート(/) の IFree が 0 なので i-node の残りが無くなったことが分かります。
Oracle の場合、i-node を使い果たすのは adump(監査ログ) の可能性が高いです。
adump を調べてみます。
cd $ORACLE_BASE/admin/ORC1/adump
ファイル数を確認します。
ls -U|wc -l
$ ls -U|wc -l
5485678
大量のファイルがあると、ls のソートに時間がかかるので、-Uオプション を付けて ls でソートを行わないようにします。
ls -U | head -n 10
↓こんな感じの audファイル があります。
$ ls -U | head -n 10
orc1_ora_6998_1.aud
orc1_ora_23830_c5.aud
orc1_ora_30383_12.aud
orc1_ora_2931_b3.aud
orc1_ora_2909_7.aud
orc1_ora_4949_84.aud
orc1_ora_29897_53.aud
orc1_ora_30293_8b.aud
orc1_ora_31876_6c.aud
orc1_ora_5034_b1.aud
audファイル を削除します。
rm -f orc1_ora_100*.aud
少し ルート が空きました。
# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 998439 378 998061 1% /dev
tmpfs 1001041 1 1001040 1% /dev/shm
tmpfs 1001041 605 1000436 1% /run
tmpfs 1001041 16 1001025 1% /sys/fs/cgroup
/dev/vda2 6553600 6531942 21658 100% /
tmpfs 1001041 13 1001028 1% /run/user/0
「orc1_ora_10*」のレベルでは、ファイルが多すぎて削除できませんでした。
rm -f orc1_ora_10*.aud
# rm -f orc1_ora_10*.aud
-bash: /usr/bin/rm: Argument list too long
rm で消すなら↓このレベルですね。
rm -f orc1_ora_101*.aud
rm -f orc1_ora_102*.aud
20回繰り返して、なんとか93%までもっていくことができました。
# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 998439 378 998061 1% /dev
tmpfs 1001041 1 1001040 1% /dev/shm
tmpfs 1001041 596 1000445 1% /run
tmpfs 1001041 16 1001025 1% /sys/fs/cgroup
/dev/vda2 6553600 6094639 458961 93% /
tmpfs 1001041 13 1001028 1% /run/user/0
以上