Oracle Database 11g を運用しているサーバの messegs を見ると以下のよう
なアラートが断続的に出力している。
kernel: EXT4-fs warning (device sda0): ext4_dx_add_entry: Directory index full!
内容を確認すると inode をたくさん使用していますよ、というメッセージらしい。
inode はファイルシステム上でファイルやディレクトリを管理する為に使用
するものらしい。
なので、ファイルがたくさんありそうなディレクトリを探してみる。
このページのコマンドを使って確認(このワンライナーちょー便利)
for dir in `ll|grep ^d|grep -v "\./"|awk '{print $9}'`; do echo `find ./$dir -true|wc -l` `pwd`/$dir; done | sort -nr
するとなにやら oracle 管理の admin ディレクトリのファイル数が 1000万ほどある!
なんやねんこれと思ってぐぐると以下ページを見つける。
adumpには気をつけて – diary
どうもこの件で困ってる方は他にもいるみたいです。
どんなファイルがあるか ls | head で確認してみると、拡張子 aud のファイル
がぞろぞろといます。
このファイルは ORACLE の監査用ファイルらしく、11g からデフォルトの監査
ログの出力内容が増えているみたいです。
– Oracle Database 11g の標準セキュリティ設定について#1 Trying Database
とまあ、本来であれば ORACLE の監査ログを適切な形で設定せねばならないの
ですが、色々と調整が面倒ですので、さくっとファイルを消す方向で行きます。
crontab にスクリプト仕込めば簡単なのですが、こちらも手続きが色々面倒アンド
一度に長時間の find 走らせるとロードアベレージが上がり監視に引っ掛かるので
手動で mtime を徐々に減らしながらやります。
find . -type f -mtime +10 -name "*.aud" | xargs rm
一旦これで対応は完了ですが、今後の運用も踏まえるとやはり ORACLE 側の設定か
cron への仕込みも必要ですね。