[PGSQL]PostgreSQL当出现数据坏块时的处理方法

 

当由于一些异常情况时,数据文件出现坏块,一般出现如下错误信息:

ERROR:  could not read block 4707 of relation 1663/16384/16564: Success

Caused  by: org.postgresql.util.PSQLException: ERROR: invalid page header in block 583 of relation "bodycontent"

处理方法如下:

先判断坏的对象是索引还是表:

 

select oid,relname from pg_class where relfilenode=16564;

如果是索引,只要重新建就可以了。

如果是表,则这个坏快的数据就丢失不,但是表的其它的没有问题的数据块中的数据还是可以找回来的:

方法是把参数:zero_damaged_pages设置为on,这样读表就不报错了。