检测方法
可以使用逻辑备份,备份整个库当没有报错的时候则代表没有报错。
当某个表存在坏块的时候select * from table;查询可能会报错
处理办法
先reindex table 坏块表;简单处理下如果不行则只能删除坏块行。
可以用下边的块函数查找每一行的ctid,然后将报错的ctid删掉(delete from table where ctid=‘(x,x)’),反复执行直到没有坏块为止。
DO $$
declare
v_rec record;
BEGIN
for v_rec in SELECT * FROM tt001 loop
raise notice 'Parameter is: %', v_rec.ctid;
raise notice 'Parameter is: %', v_rec;
end loop;
END;
$$
LANGUAGE plsql;