PostgreSQLでWARNING: skipping “pg_*” — only table or database owner can vacuum it

PostgreSQLでvacuumをする際に下記のようなワーニングがでていた。

WARNING:  skipping "pg_authid" --- only table or database owner can vacuum it
WARNING:  skipping "pg_tablespace" --- only table or database owner can vacuum it
WARNING:  skipping "pg_pltemplate" --- only table or database owner can vacuum it
WARNING:  skipping "pg_shdepend" --- only table or database owner can vacuum it
WARNING:  skipping "pg_shdescription" --- only table or database owner can vacuum it
WARNING:  skipping "pg_database" --- only table or database owner can vacuum it
WARNING:  skipping "pg_auth_members" --- only table or database owner can vacuum it

調べてみたらバージョン8.1からグローバルテーブルの情報を各DBから参照できるようになったようで、それが原因のようだ。
リリース8.1

PostgreSQLでは、グローバルテーブル(ユーザ、データベース、テーブル空間)の情報を複数のデータベースから参照することができます。

つまり、このバキュームを行っているユーザーはこのDBの所有者なのだが、このDBの中にはグローバルテーブルも含まれてしまっていて、このグローバルテーブルの所有者はスーパーユーザーなので、バキュームはできませんよ、ということ。つまり、このワーニングがでていても問題なしということで。

Share on Facebook
このエントリーをはてなブックマークに追加
はてなブックマーク - PostgreSQLでWARNING:  skipping “pg_*” — only table or database owner can vacuum it
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です