V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
lander
V2EX  ›  问与答

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

  •  
  •   lander · Sep 4, 2023 · 1441 views
    This topic created in 976 days ago, the information mentioned may be changed or developed.

    如题,在排查我们业务的一个问题,日志看怀疑是 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 replies    2023-09-05 14:27:33 +08:00
    lander
        1
    lander  
    OP
       Sep 4, 2023
    补充下 pg 是 12 版本
    simen513
        2
    simen513  
       Sep 4, 2023   ❤️ 1
    这个是 relfilenode ,不是 oid 。

    select datname from pg_database where oid = 16562;
    select relname from pg_class where relfilenode = 21708;
    lander
        3
    lander  
    OP
       Sep 5, 2023
    @simen513 非常感谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5857 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 02:43 · PVG 10:43 · LAX 19:43 · JFK 22:43
    ♥ Do have faith in what you're doing.