首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 开启 enable_lock_priority 参数导致动态分区失败
更新时间:2026-03-16 06:11
问题现象
在使用 goinception 进行无锁变更操作后,发现动态分区功能无法新增分区。
查看租户历史操作记录。
select * from DBA_OB_TENANT_EVENT_HISTORY where event='MANAGE_DYNAMIC_PARTITION';
返回结果如下:
*************************** 1. row ***************************
TIMESTAMP: 2025-11-06 18:13:06.461943
MODULE: DBMC_PARTITION
EVENT: MANAGE_DYNAMIC_PARTITION
NAME1: SUCCESS_TABLE_ID_LIST
VALUE1: []
NAME2: FAILED_TABLE_ID_LIST
VALUE2: [589738, 589752, 589766, 661990, 666152, 666355]
NAME3: NULL
VALUE3:
NAME4: NULL
VALUE4:
NAME5: NULL
VALUE5:
NAME6: NULL
VALUE6:
EXTRA_INFO: NULL
SVR_IP: XXX.XXX.XXX.231
SVR_PORT: 2882
TRACE_ID: YB420A2C16D4-000641C03299E7BD-0-0
COST_TIME: 15047
RET_CODE: 0
ERROR_MSG: NULL
1 row in set
动态分区失败未捕捉到失败错误码,根据 trace_id 过滤日志。

问题原因
使用 goinception 进行无锁变更时需要开启 enable_lock_priority 参数,但使用完后建议关闭该参数。表锁优先级开启时不支持进行动态分区。
适用版本
OceanBase 数据库 V4.2.5 及以上版本。 OceanBase 数据库 V4.3.5 BP2 及以上版本。
解决方法
关闭表锁优先级 enable_lock_priority 参数。
ALTER SYSTEM SET enable_lock_priority = FALSE;