V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lander
V2EX  ›  问与答

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

  •  
  •   lander · 2023-09-04 19:15:13 +08:00 · 773 次点击
    这是一个创建于 425 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,在排查我们业务的一个问题,日志看怀疑是 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

    3 条回复    2023-09-05 14:27:33 +08:00
    lander
        1
    lander  
    OP
       2023-09-04 19:16:00 +08:00
    补充下 pg 是 12 版本
    simen513
        2
    simen513  
       2023-09-04 22:11:12 +08:00   ❤️ 1
    这个是 relfilenode ,不是 oid 。

    select datname from pg_database where oid = 16562;
    select relname from pg_class where relfilenode = 21708;
    lander
        3
    lander  
    OP
       2023-09-05 14:27:33 +08:00
    @simen513 非常感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1243 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:34 · PVG 02:34 · LAX 11:34 · JFK 14:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.