No space left on device

/var以下でファイルが作成できない現象が発生。
例えば、適当にファイル作成してみると

$ echo hoge>aaa
bash: No space left on device

というエラーが出る。*1


ここで、ディスク容量を確認してみると

$ df -h
Filesystem    Size  Used Avail Use% Mounted on
(中略)
/dev/sdc1     2.6G  252M  2.2G  36% /var
(以下略)

まだ十分に空きはある。


その後、情報収集した結果、inodeの使用量が怪しいみたいなので確認してみると

$ df -i
Filesystem    Inodes  IUsed IFree IUse% Mounted on
(中略)
/dev/sdc1     344960 344960     0  100% /var
(以下略)

( ゜д゜)ビンゴー
どうやらinodeを使い切ってしまった模様。


調べた結果、あるアプリのログファイルの数がエライ事になっていたので、それを削除して解決。
ちなみにログファイル増殖の原因はコレ

$ cat /etc/logrotate.d/hoge
/var/log/hoge/* {
    missingok
}

そんな所に*を書くんじゃねぇ!(`Д´)ノ*2

*1:エラーの文言はちょっと違うかも

*2:logrotateが動く度にファイルの数が倍になる

シーケンスオブジェクトの確認方法

oracleでシーケンスオブジェクトが存在しているかを確認するには

SELECT シーケンスオブジェクト名.CURRVAL FROM DUAL;

を実行しシーケンスオブジェクトの現在値を見る方法が手っ取り早い。
ただし、シーケンスオブジェクトを作成した直後(一度もNEXTVALを使用していない状態)では、上記のSQLはエラーになる。
(追記)作成した直後だけではなく、セッションで一度もNEXTVALが呼ばれていない場合だった。例えば、sqlplusで接続して最初にCURRVALを使用すると「ORA-08002:順序HOGEHOGE.CURRVALはこのセッションではまだ定義されていません」というエラーが発生する。
その場合は、

SELECT * FROM user_sequence;

を実行する事で、そのスキーマのシーケンスオブジェクトを確認できる。