数据仓库服务 GaussDB(DWS)-查询表报错:missing chunk number %d for toast value %u in pg_toast_XXXX:处理方法

时间:2025-02-12 15:02:21

处理方法

  1. 通过toast的OID(示例中为2619,来源于报错信息的pg_toast_2619)查询出哪张表发生了损坏:

    12345
    SELECT 2619::regclass;   regclass-------------- pg_statistic(1 row)

  2. 对已定位的损坏表(步骤1中查询得到的表pg_statistic),执行REINDEX和VACUUM ANALYZE操作。显示REINDEX/VACUUM,表示修复完成。如果修复过程中出现报错,请继续执行步骤3

    123
    REINDEX table pg_toast.pg_toast_2619;REINDEX table pg_statistic;VACUUM ANALYZE pg_statistic;

  3. 执行以下的命令定位该表中损坏的数据行。

     1 2 3 4 5 6 7 8 91011121314
    DO $$declare v_rec record;BEGINfor v_rec in SELECT * FROM pg_statistic loop        raise notice 'Parameter is: %', v_rec.ctid;raise notice 'Parameter is: %', v_rec;end loop; END;$$LANGUAGE plpgsql;NOTICE:  00000: Parameter is: (46,9)ERROR:  XX000: missing chunk number 0 for toast value 30982 in pg_toast_2619CONTEXT:  PL/pgSQL function inline_code_block line 7 at RAISE

  4. 步骤3中定位的损坏数据行记录删除。

    1
    DELETE FROM pg_statistic WHERE ctid ='(46,9)';

  5. 重复执行步骤3步骤4,直到全部有问题的数据记录被删除。
  6. 损坏的数据行被删除后,执行步骤2中的REINDEX和VACUUM ANALYZE操作对该表重新进行修复。
support.huaweicloud.com/trouble-dws/dws_09_0122.html