postgres 如何根据 oid 找到对应的库/表?

2023-09-04 19:15:13 +08:00
 lander

如题,在排查我们业务的一个问题,日志看怀疑是 pg 数据损坏了: err = pq: invalid page in block 51467 of relation base/16562/21708 现在尝试根据 16562 这个 oid 去找对应的是哪个业务的库但是试了很多方式貌似都不行,chatgpt 也问了半天,比如: SELECT oid::regclass AS table_name FROM pg_class WHERE relname = 'your_table_name';

SELECT oid::regclass AS table_name FROM pg_class WHERE relkind = 'r';

截图: https://imgur.com/nKGDNHF

794 次点击
所在节点    问与答
3 条回复
lander
2023-09-04 19:16:00 +08:00
补充下 pg 是 12 版本
simen513
2023-09-04 22:11:12 +08:00
这个是 relfilenode ,不是 oid 。

select datname from pg_database where oid = 16562;
select relname from pg_class where relfilenode = 21708;
lander
2023-09-05 14:27:33 +08:00
@simen513 非常感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/970868

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX