首批通过分布式安全可靠测评,为关键业务系统打造
因启动参数值类型错误导致 OBServer 启动失败报错 -4147 的原因和解决方法
更新时间:2026-06-08 02:41
问题现象
通过 OCP 部署 OBServer 时,在 Bootstrap ob 子任务执行失败,查看 OBServer 进程未启动成功,日志打印 Invalid config value -4147。

关键信息
关键日志信息为 [errcode=-4016] set int error、[errcode=-4147] Invalid config value。
[2024-09-03 11:16:45.047432] EDIAG parse (ob_config.cpp:691) [835523][observer][T0][Y0-0000000000000000-0-0] [lt=19][errcode=-4016] set int error(name="_enable_defensive_check", str="TRUE", valid=false)
[2024-09-03 11:16:45.047558] EDIAG [SHARE] operator() (ob_common_config.cpp:359) [835523][observer][T0][Y0-0000000000000000-0-0] [lt=11][errcode=-4147] Invalid config value(name="_enable_defensive_check", value="TRUE", ret=-4147)
问题原因
部署 OBServer 时启动参数中存在参数指定的类型不一致,导致初始化失败。 在本案例中 OCP 配置了启动参数 _enable_defensive_check 的值为 TRUE,而此值的类型为字符串类型,但此参数需要设置为 int 类型(数字),所以会报错并退出 OBServer 进程。
同时日志会打印如下信息。
[2024-09-03 11:16:45.047432] EDIAG parse (ob_config.cpp:691) [835523][observer][T0][Y0-0000000000000000-0-0] [lt=19][errcode=-4016] set int error(name="_enable_defensive_check", str="TRUE", valid=false)
[2024-09-03 11:16:45.047558] EDIAG [SHARE] operator() (ob_common_config.cpp:359) [835523][observer][T0][Y0-0000000000000000-0-0] [lt=11][errcode=-4147] Invalid config value(name="_enable_defensive_check", value="TRUE", ret=-4147)
问题的风险及影响
OBServer 部署失败,进程退出。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V4.x 版本。
解决方法及规避方式
解决方法:
将 OCP 中错误的参数值类型修改正确,例如将
_enable_defensive_check的值设置为 1 。规避方式:
避免在启动时指定不必要的参数,建议在部署完成后通过
ALTER SYSTEM SET命令来设置所需参数,可以从 SQL 层面将非法值拦截。