lander
V2EX  ›  问与答

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

  •  
  •   lander · Sep 4, 2023 · 1506 views
    This topic created in 1000 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   ·   858 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 19:33 · PVG 03:33 · LAX 12:33 · JFK 15:33
    ♥ Do have faith in what you're doing.