首批通过分布式安全可靠测评,为关键业务系统打造
升级过程中 OBServer 启动失败,报错 4006 "ObLinkedMacroBlockIterWriter has not been inited"
更新时间:2026-07-02 15:41
问题现象
操作情景:升级场景,升级路径是跨 V4.3.2 版本升级,即从 V4.3.0、V4.3.1 OBServer 版本 升级到 V4.3.3、V4.3.4 OBServer 版本,例如 V4.3.0 升级到 V4.3.3。
报错信息/报错情况:报错 4006,报错信息类似 ObLinkedMacroBlockIterWriter has not been inited。
报错影响:升级替换 binary 之后,OBServer 启动失败。
关键诊断信息
触发条件
触发条件有二。
升级: 升级路径是跨 V4.3.2 版本升级,即从 V4.3.0、V4.3.1 OBServer 版本升级到 V4.3.3、V4.3.4 OBServer 版本,例如 V4.3.0 升级到 V4.3.3。
单分区数据量较大: 缺陷为
linked_block相关的优化,只有当单分区有 15000 以上个宏块时才会需要写linked_block,可以计算 15000 个宏块,大小可以认为是 30G;30G 是一个边界值,测试的时候可以更保险一点,比如使用 60G。注意
30G 作为边界值,含义为压缩后实际写下去的数据量为 30G,而不是数据压缩前的大小。
事前巡检
检查升级路径,不要升级到 V4.3.3、V4.3.4 版本;V4.3.5 之前的版本为 Beta、LDS 版本,升级时推荐使用作为 LTS 的 V4.3.5 版本。
如确实要升级到 V4.3.3 版本,升级 V4.3.3 版本前检查目标版本是否已经修复该问题,已在 V4.3.3 BP1 Hotfix7 版本中修复该问题。
满足升级路径的触发条件时,不应该升级到 V4.3.4 版本,V4.3.4 版本不会修复该问题。
事后诊断
OBServer 启动线程报错 4006,报错信息类似 ObLinkedMacroBlockIterWriter has not been inited。
问题原因
问题版本中对 tablet 初始化接口改造不完全,临时 tablet 不应该写 linked_block,但是传递了一个未初始化的 linked_block_writer,导致报错 4006 not_inited。
问题的风险及影响
升级更换 binary 后,OBServer 启动失败。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
影响版本
OceanBase 数据库企业版 V4.3.3 GA(oceanbase-4.3.3.0-100000362024093001)及之后版本。
解决方法
事前预防: 避免升级到 V4.3.3、V4.3.4 版本。
已经触发问题解决:
a. 升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库企业版 V4.3.3 BP1 Hotfix7(oceanbase-4.3.3.1-101070012025021915)及之后版本、V4.3.5(oceanbase-4.3.5.0-100000122024123020)。
b. 升级到 V4.3.4(不建议升级到 V4.3.4),联系 OceanBase 技术团队处理该问题,可能要发布临时版本。
规避方式
避免升级到 V4.3.3、V4.3.4 版本。