酒日記

2002 07 08

Mon, 08 Jul 2002

一番絞り 樽生 (5.5% × 900 ml)

不調。スランプというか。

要は仕事が思うように進まないだけなんだが。

とある仕事で使っている PostgreSQL サーバが月曜深夜に、

NOTICE:  Buffer Leak: [003] (freeNext=-3, freePrev=-3, relname=service_stat, blockNum=67, +flags=0x4, refcount=1 77)

などという不吉なメッセージを吐いていた。 これ以降、SQLを投げてもまともに返事が得られないという、しゃれにならない事態が発生。

postmaster を再起動したら直ったようにみえたが、どうもまだ特定のテーブルにアクセスできず。 service_stat というテーブルから SELECT しようとしても、

ERROR:  Relation 'service_stat' does not exist

などと言われてしまう。システム表 (pg_class) には service_stat のレコードがあるようにみえるのだが、 これも、

SELECT * FROM pg_class WHERE relname='service_stat';

とすると 0 rows。しかし

SELECT * FROM pg_class WHERE relname ~ 'service_stat';

とすれば1行返ってくる。なんなんだ。

... ま、このままではしょうがないので、乱暴だがシステム表を手動で書き換える。

UPDATE pg_class SET relname='service_stat' WHERE relname ~ 'service_stat';

とすると、service_stat テーブルに触れるようになった。入っているデータは問題ない模様。
# 共有メモリがぶっ壊れて、その余波でシステム表も壊れたのか?

この DB サーバ、一昨年秋昨年夏 にもトラブってるというクセモノ。他の機械で動いている PostgreSQL はほぼノートラブルなだけに、もしかしてこの機械、ハードウェア的に何かあるんじゃないか (メモリがごくまれにエラーを起こすとか?) という疑念も沸くところ。 しかし疑念が沸いたところで、今さらハードウェアの検証からやり直すわけにもいかないしなあ・・・


powered by blosxom