ITPub博客

首页 > 数据库 > 国内数据库 > enable_lock_priority 开启后,动态分区自动调度失效

enable_lock_priority 开启后,动态分区自动调度失效

原创 国内数据库 作者:瑞蓝创_RLC_888 时间:2026-11-11 11:57:12 0 删除 编辑

排查过程

集群版本: 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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
专注于企业信息科技战略咨询、数据中心规划及运维、智能化软件产品研发,致力于为金融、能源、电信、制造等行业提供智能的业务永续及流程自动化解决方案。

注册时间:2025-09-08

  • 博文量
    97
  • 访问量
    94296