GV$DML_STATS的对象id字段

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】社区版4.2.1
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

GV$DML_STATS中的字段OBJN,对应分区表怎么查询?
@论坛小助手

根据文档库中的信息,GV$DML_STATS 视图中的 OBJ# 字段表示对象的唯一标识符,即对象ID。对于分区表,可以通过该视图来查询每个分区的 DML 统计信息。但是,要具体查询分区表的 DML 统计信息,您需要结合表的元数据信息,如 ALL_TAB_PARTITIONSALL_TAB_SUBPARTITIONS 视图,来获取分区的 OBJ#

以下是查询分区表 DML 统计信息的一个示例步骤:

  1. 查询分区表的分区信息:使用 ALL_TAB_PARTITIONSALL_TAB_SUBPARTITIONS 视图来获取分区表的分区信息及其对应的 OBJ#

    -- 查询分区表的分区信息
    SELECT 
        TABLE_NAME, 
        PARTITION_NAME, 
        SUBPARTITION_NAME, 
        OBJECT_ID AS OBJ#
    FROM 
        ALL_TAB_PARTITIONS
    WHERE 
        TABLE_NAME = 'your_partitioned_table_name'
    AND 
        TABLE_OWNER = 'your_schema_name';
    
  2. 查询 GV$DML_STATS 视图:使用上一步获取的 OBJ# 来查询 GV$DML_STATS 视图,获取每个分区的 DML 统计信息。

    -- 查询分区表的 DML 统计信息
    SELECT 
        OBJ#, 
        INSERTS, 
        UPDATES, 
        DELETES, 
        TIMESTAMP
    FROM 
        GV$DML_STATS
    WHERE 
        OBJ# IN (
            SELECT OBJECT_ID 
            FROM ALL_TAB_PARTITIONS
            WHERE TABLE_NAME = 'your_partitioned_table_name'
            AND TABLE_OWNER = 'your_schema_name'
        );
    

通过上述步骤,您可以查询到分区表各个分区的 DML 统计信息。 [7]

具体信息可参考以下文档:

  1. 指定分区查询数据
  2. oceanbase.DBA_TAB_SUBPARTITIONS
  3. SQL 路由
  4. V$OB_PLAN_CACHE_STAT
  5. V$OB_PLAN_CACHE_PLAN_STAT
  6. 统计信息收集监控诊断
  7. 自动收集统计信息

小助手提供的语句 能解决你的问题么?

社区版没有小助手提供的视图

用oceanbase.DBA_OBJECTS里面的object_id字段去查询,分区表的也是在GV$DML_STATS匹配不到

试试用cdb_ob_table_locations 的table_id。小助手提供的是oracle模式的忽略掉 :rofl: