pg_catcheck

用于诊断系统目录是否损坏的工具

概览

扩展包名版本分类许可证语言
pg_catcheck1.6.0ADMINBSD 3-ClauseC
ID扩展名BinLibLoadCreateTrustReloc模式
5160pg_catcheck-
相关扩展pg_checksums amcheck pg_surgery pageinspect pg_visibility pgstattuple ddlx pgdd

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG1.6.01817161514pg_catcheck-
RPMPGDG1.6.01817161514pg_catcheck_$v-
DEBPGDG1.6.01817161514postgresql-$v-pg-catcheck-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
d12.aarch64
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
d13.x86_64
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
d13.aarch64
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
u22.x86_64
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
u22.aarch64
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
u24.x86_64
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
u24.aarch64
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0
PGDG 1.6.0

安装

您可以直接安装 pg_catcheck 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:

pig repo add pgdg -u          # 添加 PGDG 仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pg_catcheck;          # 当前活跃 PG 版本安装
pig ext install -y pg_catcheck -v 18  # PG 18
pig ext install -y pg_catcheck -v 17  # PG 17
pig ext install -y pg_catcheck -v 16  # PG 16
pig ext install -y pg_catcheck -v 15  # PG 15
pig ext install -y pg_catcheck -v 14  # PG 14
dnf install -y pg_catcheck_18       # PG 18
dnf install -y pg_catcheck_17       # PG 17
dnf install -y pg_catcheck_16       # PG 16
dnf install -y pg_catcheck_15       # PG 15
dnf install -y pg_catcheck_14       # PG 14
apt install -y postgresql-18-pg-catcheck   # PG 18
apt install -y postgresql-17-pg-catcheck   # PG 17
apt install -y postgresql-16-pg-catcheck   # PG 16
apt install -y postgresql-15-pg-catcheck   # PG 15
apt install -y postgresql-14-pg-catcheck   # PG 14

创建扩展

CREATE EXTENSION pg_catcheck;

用法

pg_catcheck: 诊断系统目录损坏

pg_catcheck 是一个命令行工具,通过验证目录表之间的交叉引用来检查 PostgreSQL 系统目录是否损坏。它接受与其他 PostgreSQL 工具相同的连接参数(-h-p-U-d)。

基本用法

pg_catcheck -h localhost -p 5432 -d mydb

未发现问题时的正常输出:

progress: done (0 inconsistencies, 0 warnings, 0 errors)

存在损坏时的示例输出

notice: pg_class row has invalid relnamespace "24580": no matching entry in pg_namespace
row identity: oid="24581" relname="foo" relkind="r"
notice: pg_type row has invalid typnamespace "24580": no matching entry in pg_namespace
row identity: oid="24583"
progress: done (4 inconsistencies, 0 warnings, 0 errors)

结果分类

  • 不一致:目录交叉引用中的逻辑问题(例如悬空的 OID 引用)
  • 警告:更严重的问题
  • 错误:无法读取目录

选项

pg_catcheck --help                      # 完整选项列表
pg_catcheck --select-from-relations     # 同时检查缺失/不可访问的关系文件

连接

支持与 psql 相同的选项:-h 主机、-p 端口、-U 用户、-d 数据库,或连接字符串/URL。


最后修改 2026-03-14: update extension metadata (953cbd0)