集群版本: 4.4.2.0
BB表是23号创建的,24号凌晨自动分区没调度成功
SELECT *
FROM oceanbase.DBA_OB_DYNAMIC_PARTITION_TABLES
WHERE TABLE_NAME =
'BB';
+
---------------+--------------------------+----------+-----------------------+--------+-----------+----------------+-------------+-----------+------------------+
| DATABASE_NAME | TABLE_NAME | TABLE_ID | MAX_HIGH_BOUND_VAL | ENABLE | TIME_UNIT | PRECREATE_TIME | EXPIRE_TIME | TIME_ZONE | BIGINT_PRECISION |
+
---------------+--------------------------+----------+-----------------------+--------+-----------+----------------+-------------+-----------+------------------+
| AA | BB | 518786 | '2026-09-25 00:00:00' | TRUE | DAY | 7DAY | 15DAY | DEFAULT | NONE |
+
---------------+--------------------------+----------+-----------------------+--------+-----------+----------------+-------------+-----------+------------------+
1 row in
set (
0.091 sec)
看着分区策略没调度成功,过期删除和预创建分区都没,25号的分区是客户手动创建的

select
/*+query_timeout(30000000)*/*
from oceanbase.__all_virtual_ddl_operation
where tenant_id=
1006
and ddl_stmt_str
like
'%BB%'
order
by gmt_modified
desc
limit
20\G;
*************************** 1. row ***************************
tenant_id: 1006
schema_version: 1790213391570784
gmt_create: 2026-09-24 09:29:51.579196
gmt_modified: 2026-09-24 09:29:51.579196
user_id: 0
database_id: 515851
database_name:
tablegroup_id: -1
table_id: 518786
table_name:
operation_type: 3
ddl_stmt_str:
ALTER
TABLE BB
ADD
PARTITION (
PARTITION P20260924
VALUES
LESS
THAN (
'2026-09-25 00:00:00')
)
exec_tenant_id:
1006
***************************
2.
row ***************************
tenant_id:
1006
schema_version:
1790134620269744
gmt_create:
2026
-09
-23
11:
37:
00.348857
gmt_modified:
2026
-09
-23
11:
37:
00.348857
user_id:
0
database_id:
515851
database_name:
tablegroup_id:
-1
table_id:
518786
table_name:
operation_type:
4
ddl_stmt_str:
CREATE
TABLE
`BB` (
XX
)
DEFAULT
CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci
DYNAMIC_PARTITION_POLICY (
ENABLE =
TRUE,
TIME_UNIT =
'day',
PRECREATE_TIME =
'7 day',
EXPIRE_TIME =
'15 day',
TIME_ZONE =
'default'
)
PARTITION
BY
RANGE
COLUMNS (
`execute_time`) (
PARTITION
`p_seed`
VALUES
LESS
THAN (
'2026-09-08 00:00:00'),
PARTITION
`p20260908`
VALUES
LESS
THAN (
'2026-09-09 00:00:00'),
PARTITION
`p20260909`
VALUES
LESS
THAN (
'2026-09-10 00:00:00'),
PARTITION
`p20260910`
VALUES
LESS
THAN (
'2026-09-11 00:00:00'),
PARTITION
`p20260911`
VALUES
LESS
THAN (
'2026-09-12 00:00:00'),
PARTITION
`p20260912`
VALUES
LESS
THAN (
'2026-09-13 00:00:00'),
PARTITION
`p20260913`
VALUES
LESS
THAN (
'2026-09-14 00:00:00'),
PARTITION
`p20260914`
VALUES
LESS
THAN (
'2026-09-15 00:00:00'),
PARTITION
`p20260915`
VALUES
LESS
THAN (
'2026-09-16 00:00:00'),
PARTITION
`p20260916`
VALUES
LESS
THAN (
'2026-09-17 00:00:00'),
PARTITION
`p20260917`
VALUES
LESS
THAN (
'2026-09-18 00:00:00'),
PARTITION
`p20260918`
VALUES
LESS
THAN (
'2026-09-19 00:00:00'),
PARTITION
`p20260919`
VALUES
LESS
THAN (
'2026-09-20 00:00:00'),
PARTITION
`p20260920`
VALUES
LESS
THAN (
'2026-09-21 00:00:00'),
PARTITION
`p20260921`
VALUES
LESS
THAN (
'2026-09-22 00:00:00'),
PARTITION
`p20260922`
VALUES
LESS
THAN (
'2026-09-23 00:00:00'),
PARTITION
`p20260923`
VALUES
LESS
THAN (
'2026-09-24 00:00:00')
)
exec_tenant_id:
1006
2
rows
in
set (
0.147 sec)
ERROR:
No
query specified
可以看到调度任务是调度失败了,根据table_id可以确认是BB表
SELECT
`TIMESTAMP`,
MODULE,
EVENT,
NAME1, VALUE1,
NAME2, VALUE2,
RET_CODE,
ERROR_MSG,
TRACE_ID
FROM oceanbase.DBA_OB_TENANT_EVENT_HISTORY
WHERE
MODULE =
'DBMS_PARTITION'
AND
EVENT =
'MANAGE_DYNAMIC_PARTITION'
AND
`TIMESTAMP` >= '2026-09-24 00:00:00'
AND `TIMESTAMP` < '2026-09-25 00:00:00'
ORDER BY `TIMESTAMP`;
由于发现较晚日志已经刷没了,未确认原因前先让客户暂时手动创建分区规避。
9.25日凌晨sql执行结果,留存日志,根据trace_id去过滤observer日志,
grep 'YB420A662025-000655EB376A0A4B-0-0' observer.log.xxxxx | more
+
----------------------------+----------------+--------------------------+-----------------------+--------+----------------------+------------------+----------+-----------+-----------------------------------+
| TIMESTAMP | MODULE | EVENT | NAME1 | VALUE1 | NAME2 | VALUE2 | RET_CODE | ERROR_MSG | TRACE_ID |
+
----------------------------+----------------+--------------------------+-----------------------+--------+----------------------+------------------+----------+-----------+-----------------------------------+
| 2026-09-25 00:00:00.054090 | DBMS_PARTITION | MANAGE_DYNAMIC_PARTITION | SUCCESS_TABLE_ID_LIST | [] | FAILED_TABLE_ID_LIST | [] | 0 | NULL | xxx
| 2026-09-25 00:00:00.071443 | DBMS_PARTITION | MANAGE_DYNAMIC_PARTITION | SUCCESS_TABLE_ID_LIST | [] | FAILED_TABLE_ID_LIST | [518786, 518909] | 0 | NULL | xxx |
+
----------------------------+----------------+--------------------------+-----------------------+--------+----------------------+------------------+----------+-----------+-----------------------------------+
2 rows in
set (
0.047 sec)
存在set lock priority failed字样的报错,原因是:开启 enable_lock_priority 参数导致动态分区失败
enable_lock_priority表锁优先级开关为开启,导致自动创建分区任务失败,enable_lock_priority 配置项打开后,会在 alter table路径校验 session id 是否为内部会话,如果是内部会话会直接拒绝执行,这导致依赖 inner session 执行 alter table add partition 的动态分区管理被误伤,无法新建出分区。
官方文档相关报错说明: https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000005520974?back=kb
enable_lock_priority参数(默认是关闭的)说明文档: https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005285784
客户侧因为使用过云上OB无锁表结构变更功能,将 enable_lock_priority设置为 ture
当前规避方案:关闭 enable_lock_priority,该参数也不建议长期打开,无锁结构变更后也建议关闭该参数,关闭语句:ALTER SYSTEM SET enable_lock_priority = FALSE;
官方文档相关报错说明: https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000005520974?back=kb
enable_lock_priority参数说明文档: https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005285784
动态分区文档: https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005286229
如果在操作过程中遇到问题,欢迎在评论区留言交流,后续我们会持续分享更多实战运维干货,记得 关注不迷路 ,下次见~
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70047467/viewspace-3188584/ ,如需转载,请注明出处,否则将追究法律责任。