2011-12-27 10 views
1

Mac OS X 10.7.2でPostgreSQLサーバを実行しています。時には、特にシステムドライブの空き容量が少ないPostgreSQLの魔法

CREATE OR REPLACE TEMPORARY VIEW <Name> AS SELECT * FROM <Table>; 

は2-5の後のコードPGRES_FATAL_ERROR = 7とメッセージ

ERROR: invalid page header in block 4169 of relation "pg_type" 

で失敗しましたランダムなクエリは、クエリがエラーなしでOK終了する試み。

システムドライブの空き容量が多いため、アプリケーションが正常に動作し、データベースエラーが発生していないため、システムドライブの空き容量が少なくなっていると思います。

クエリを失敗したためにエラーを指定するにはどうすればよいですか?

UPDATE:ログ

sh-3.2# cat postgres_LOG.1324986905 
LOG: database system was shut down at 2011-12-27 15:54:32 MSK 
LOG: checkpoint record is at 1/EEE1161C 
LOG: redo record is at 1/EEE1161C; undo record is at 0/0; shutdown TRUE 
LOG: next transaction ID: 1814900; next OID: 808694 
LOG: next MultiXactId: 1; next MultiXactOffset: 0 
LOG: database system is ready 
LOG: transaction ID wrap limit is 1073763426, limited by database "my_db" 
LOG: connection received: host=::1 port=49159 
LOG: connection authorized: user=my_db database=my_db 
LOG: connection received: host=::1 port=49161 
LOG: connection authorized: user=my_db database=my_db 
LOG: connection received: host=::1 port=49162 
LOG: connection authorized: user=my_db database=my_db 
LOG: connection received: host=::1 port=49263 
LOG: connection authorized: user=my_db database=my_db 
LOG: connection received: host=::1 port=49264 
LOG: connection authorized: user=my_db database=my_db 
ERROR: invalid page header in block 4169 of relation "pg_type" 
LOG: connection received: host=::1 port=49266 
LOG: connection authorized: user=my_db database=my_db 
ERROR: invalid page header in block 4169 of relation "pg_type" 
LOG: connection received: host=::1 port=49273 
LOG: connection authorized: user=my_db database=my_db 
LOG: connection received: host=::1 port=49274 
LOG: connection authorized: user=my_db database=my_db 
LOG: connection received: host=::1 port=49276 
LOG: connection authorized: user=my_db database=my_db 
LOG: connection received: host=::1 port=49277 
LOG: connection authorized: user=my_db database=my_db 
LOG: connection received: host=::1 port=49362 
LOG: connection authorized: user=my_db database=my_db 
LOG: connection received: host=::1 port=49363 
LOG: connection authorized: user=my_db database=my_db 
LOG: connection received: host=::1 port=50293 
LOG: connection authorized: user=my_db database=my_db 
sh-3.2# 
+0

ログにはこれ以上の情報はありませんか? – fge

+0

影響を受けるデータディレクトリのファイルシステムをチェックしましたか?そこに何かエラーがありますか? – tscho

答えて

0

より可能性の高いいくつかのシステムテーブルが破損しているが追加されました。少なくともpg_typepg_typeは通常かなり小さい(1ダースページ/ブロック)ので、あなたの番号(4169)はかなり大きいので、いくつかの掃除のように潜んでいる他の問題があるかもしれません。

+0

OPは明らかに一時的なビューを頻繁に作成しています。これは、pg_typeなどのシステムテーブルのサイズが増加するため、まったく変わっていない可能性があります。 –

+0

@MagnusHagander:IMHOでは、一時テーブルやビューを頻繁に使用しても、適切な掃除が行われていないとシステムテーブルを爆発させることはありません。 –

+0

同時実行されているアクティビティの量と複雑さに依存して、すぐに真空が十分に到達しないことがあります。しかしどちらの方法でも、それは問題とは無関係かもしれません - ファイルがはっきりと大きかったり、エラーメッセージが違うはずです。 –

1

ディスク/ファイルシステムの破損によく似ています。できるだけ早くデータベースのダンプ/リロードサイクルを行うことをお勧めします。可能であれば、ファイルシステムとディスクハードウェアのチェックも行います。

空きディスク容量に関連してはいけません。違うエラーが発生します。

関連する問題