关键字
人大金仓、金仓数据库、KingbaseES、KES、SYS_DUMP、SYS_TOAST、PG_TOAST、PG_STATISTIC、
missing chunk numbe 0 for toast value 323583 in SYS_TOAST_xxx
问题描述
使用KingbaseES数据库的客户端工具sys_dump时,出现如下所示报错:
错误: missing chunk number 0 for toast value 323583 in SYS_TOAST_2619
或者
错误: missing chunk number 0 for toast value 323583 in PG_TOAST_2619
原因分析
与某张表相关联的toast表存储的数据发生损坏。
相关知识:
toast是超尺寸字段存储技术(The Oversized Attribute Storage Technique的缩写),是超长字段在KingbaseES的一种存储方式。当某表中存在超长字段的时候,那这个表会有与之相关联的toast表。根据toast表的命名规则,如果存在oid为2906表test,那么与之相关联的toast表名就为pg_toast_2906。如果表pg_toast_2906的数据发生损坏,就会出现本文描述的错误。
解决方案
1)通过toast的oid(这里是2619,来源于报错信息的SYS_TOAST_2619)查询出哪张表出现了问题:
kingbase=# SELECT 2619::regclass; --查询oid为2619的表名
regclass
--------------
pg_statistic
(1 row)
2) 使用出问题