运行startWeblogic.sh启动WebLogic时出现BEA-000386子系统失败错误
故障根因
报错栈里后3条异常都是服务依赖链断裂导致的连锁报错,核心触发点是第一条java.lang.AssertionError: nobody!=oradwbi:
WebLogic启动时BootService组件会校验当前执行启动操作的系统用户,和WebLogic安装、域创建时使用的属主用户是否一致。你安装配置WebLogic、创建域时使用的是oradwbi系统用户,但当前执行startWeblogic.sh脚本时实际生效的用户是nobody,用户校验不通过直接触发断言失败,后续依赖BootService的PartitionRuntimeBuilderService等组件自然无法正常加载,最终抛BEA-000386致命错误导致服务启动失败。
常见触发场景:
- 直接用root用户执行启动脚本,root启动时部分子进程会降权为nobody用户运行
- 切换用户时没有加
-参数加载用户环境变量,比如用su oradwbi而非su - oradwbi,导致用户身份识别异常 - WebLogic安装目录、域目录的文件属主被误修改为nobody
- 配置了系统自启动服务时,服务配置文件里指定的运行用户写错为nobody
- 启动脚本里被硬编码了切换到nobody用户的逻辑
修复步骤
- 先执行
whoami确认当前登录的操作用户,如果不是oradwbi,执行su - oradwbi完整切换到该用户(必须加-参数加载用户环境变量),再进入域的bin目录执行./startWeblogic.sh尝试启动 - 如果当前用户确实是
oradwbi,执行递归命令修正WebLogic相关目录的属主:chown -R oradwbi:oradwbi $MW_HOME $DOMAIN_HOME,其中$MW_HOME替换为你实际的WebLogic安装根路径,$DOMAIN_HOME替换为你当前故障域的根路径 - 检查
startWeblogic.sh、setDomainEnv.sh等域启动脚本,排查有没有硬编码的su nobody、runuser nobody类用户切换逻辑,存在的话删除或修改为oradwbi用户 - 如果是配置了操作系统自启动服务的场景,检查服务unit文件里的
User配置项,将错误的nobody改为oradwbi,执行systemctl daemon-reload重载配置后再启动服务
注意:禁止混用不同系统用户执行WebLogic安装、域创建、启停操作,也不要直接用root用户启动WebLogic,这类操作极易引发属主不一致、权限不足类启动故障。
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

