存储过程问题定位

【 使用环境 】 单节点 centos7
【 OB or 其他组件 】 ob
【 使用版本 】 ob-ce 4.35
【问题描述】

调用存储过程 例如 CALL DBMS_PARTITION.MANAGE_DYNAMIC_PARTITION(); 虽然提示执行成功,但没有效果,查询 SELECT * FROM oceanbase.DBA_OB_TENANT_EVENT_HISTORY WHERE EVENT = ‘MANAGE_DYNAMIC_PARTITION’
ORDER BY TIMESTAMP DESC ; 发现列FAILED_TABLE_ID_LIST存在失败表,但是没给出错误提示 如何定位问题原因呢?

【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

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

相关表结构和CALL DBMS_PARTITION.MANAGE_DYNAMIC_PARTITION()语句的详细sql提供一下

CREATE TABLE IF NOT EXISTS enc_anon (

`rec_id`         bigint(20)   ,      

`obj_code`       varchar(32)   ,    

`key`       bigint            

) DYNAMIC_PARTITION_POLICY(

TIME_UNIT = ‘day’,

PRECREATE_TIME = ‘3day’,

BIGINT_PRECISION = ‘s’

) PARTITION BY RANGE(part_key) (

PARTITION p20250917 VALUES LESS THAN(20250918)

); 调用官方提供的 CALL DBMS_PARTITION.MANAGE_DYNAMIC_PARTITION(); 作用是生成动态分区, 出错信息是通过 系统视图 SELECT TIMESTAMP , EVENT , NAME1 , VALUE1 , NAME2 ,VALUE2 FROM oceanbase.DBA_OB_TENANT_EVENT_HISTORY WHERE EVENT = ‘MANAGE_DYNAMIC_PARTITION’
ORDER BY TIMESTAMP DESC ; 查询的

麻烦这个调用DBMS包的命令详细也发一下
CALL DBMS_PARTITION.MANAGE_DYNAMIC_PARTITION();

1操作复现 :
建表之后多次调用 CALL DBMS_PARTITION.MANAGE_DYNAMIC_PARTITION(); 命令 查看分区创建情况 发现 创建到 6145分区就失败了 查询视图 显示了 FAILED_TABLE_ID_LIST 相关的表ID 以及 traceID YB42C0A81FA4-00063EE6E491428C-0-0 但是查询 服务器日志没有找到有用信息

调用说明 动态分区管理任务

手动触发动态分区管理

直接调用 DBMS_PARTITION.MANAGE_DYNAMIC_PARTITION() 即可触发一次动态分区管理任务:

CALL DBMS_PARTITION.MANAGE_DYNAMIC_PARTITION();

MANAGE_DYNAMIC_PARTITION 有两个参数:precreate_timetime_unit。详细介绍信息,参见 MANAGE_DYNAMIC_PARTITION

  • 指定 precreate_time 时,将取指定值和表上 precreate_time 中的较大值进行预创建分区。示例如下:
CALL DBMS_PARTITION.MANAGE_DYNAMIC_PARTITION('3DAY');
  • 指定 time_unit 时,仅表的 time_unit 与指定 time_unit 匹配时,才会进行动态分区管理。示例如下:
CALL DBMS_PARTITION.MANAGE_DYNAMIC_PARTITION(NULL, 'day, week');

2 官方仓库DBMS_PARTITION 包源码查看

https://github.com/oceanbase/oceanbase/tree/develop/src/share/in…
目录下放的就是 系统内置包(DBMS 包) 的定义脚本。
接着向下找到了 src/pl/sys_package/ob_dbms_partition.cpp src/pl/sys_package/ob_dbms_partition.h src/pl/ob_pl_interface_pragma.h 这三个文件 实现应该是ob_dbms_partition.cpp 这个了

435版本bp几版本,这边复现一下