[pgsql-jp: 41742] insert 時に could not read block
TERAOKA Yoshinori
y-teraoka @ m3.com
2014年 11月 5日 (水) 13:05:13 JST
寺岡と申します。
PostgreSQL 9.3 で pg_class が次のようなテーブルに行を追加しようと insert を発行したところ
ERROR: could not read block 6755 in file "base/80518/99289": read only 0 of 8192 bytes
というエラーで insert に失敗しました。(src/backend/storage/smgr/md.c の mdread() の中)
delete & insert する batch 処理で2回実行して2度ともエラーとなりました。
block の数は1づつ増えました。
relname | ***
relnamespace | 80527
reltype | 99291
reloftype | 0
relowner | 80519
relam | 0
relfilenode | 99289
reltablespace | 0
relpages | 6753
reltuples | 438945
relallvisible | 6753
reltoastrelid | 0
reltoastidxid | 0
relhasindex | t
relisshared | f
relpersistence | p
relkind | r
relnatts | 10
relchecks | 0
relhasoids | f
relhaspkey | t
relhasrules | f
relhastriggers | f
relhassubclass | f
relispopulated | t
relfrozenxid | 17832108
relminmxid | 14342
relacl | {***}
reloptions |
relpages を超える block を読もうとしているのかなということで、
どこかで不整合が起きているのかもしれないと vacuum full してみた
ところ insert 可能となりました。
当該テーブルのデータは消えても、ロックがかかっても問題ないという
ものだったため、なんとかなりましたが、こういった事象に対して
何か情報をお持ちの方はいらっしゃいますでしょうか。
replication から昇格したインスタンスですが、このテーブルは batch 的に
delete & insert が行われるだけのもので、昇格時周辺での更新はありません。
OS: Oracle Linux Server release 6.5
Kernel: 2.6.39-400.212.1.el6uek.x86_64
PostgreSQL: PostgreSQL 9.3.2 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red
Hat 4.4.7-4), 64-bit
Data page checksum version: 1
--
寺岡
pgsql-jp メーリングリストの案内