新闻详情

新闻详情

首页 / 资讯中心 / 详情

WebLogic 12.2.1.4 静默安装与 WLST 建域排错实战

发布时间:2026/10/2 11:11:35来源:尧图网络
WebLogic 12.2.1.4 静默安装与 WLST 建域排错实战
WebLogic Server 12.2.1.4 这套环境我从 2019 年那个版本刚放出来就开始搭Windows 和 Linux 两条路都走过前后不下二十次踩过的坑能凑成一本薄薄的小册子。很多人以为装个中间件而已结果卡在 JDK 版本、静默安装参数、建域脚本这几个点上一卡就是大半天。这篇文章就是把我这些年的搭建过程完整摊开讲一遍准备什么、为什么这么准备、每一步的实际命令长什么样、报错了往哪查。12.2.1.4 这个版本号在 12c 家族里有点特殊它是 12.2.1 这条线上的第四个补丁集发布时间在 2019 年下半年属于长期支持分支。很多企业的核心系统还压在 12.1.3 或者更早的 10.3.6 上升级时最终选的落脚点就是它——比 14c 更保守比 12.2.1.3 更完整JDK 8 和 JDK 11 都能跑。所以你会看到招聘要求里写熟悉 Weblogic 12c九成指的是这个版本。这篇文章适合三类人第一次独立搭 WebLogic 环境的新人按着步骤抄就能跑起来从 Windows 开发机切到 Linux 服务器部署的老手重点看第四章的系统参数和建域脚本还有被各种诡异报错折磨过的同行第五章的问题速查表可以直接收藏。我不会只给命令不给解释每个参数为什么这么设、不这么设会出什么事都会说清楚。1. 为什么 12.2.1.4 现在还有人在认真搭1.1 版本定位它在 12c 家族里处于什么位置WebLogic 的版本命名挺容易让人迷糊。12.2.1 是主版本后面跟的第四个数字才是补丁集所以 12.2.1.4 读作12.2.1 的第 4 个补丁集官方内部叫 12c Release 2 的第四次更新。它的上一个版本是 12.2.1.3再下一个大版本直接跳到了 14.1.1也就是俗称的 14c。真正值得说的地方在于12.2.1.4 是 12.2.1 系列里第一个把 JDK 11 纳入支持范围的版本。之前 12.2.1.3 只认 JDK 8很多想统一 JDK 版本栈的团队被卡住。12.2.1.4 之后这条路通了你可以继续留在 JDK 8 上求稳也可以试水 JDK 11。这个差异直接决定了你安装前要下哪个 JDK 包后面第二章会展开。另一个现实原因14c 移除了一批老组件和旧 API很多跑了十年的老应用直接部署不上去。升级评估做了一年最后发现能不动就不动选 12.2.1.4 打补丁就行——这是我在好几个客户现场听到的原话。1.2 这套环境到底解决什么问题、给谁用环境搭建这件事听起来是纯体力活其实分三层目标很多人只盯着第一层后面两层没做好环境就是能启动但不敢用的状态。第一层跑起来装完中间件、建好域、AdminServer 能起来、控制台能登进去。第二层跑得稳内存参数合理、日志落到规范位置、Linux 系统参数调过、开机自启配好。第三层能交接目录结构清晰、域配置有备份、新建受管服务器的流程别人拿到文档就能复现。只做到第一层环境就是个演示品。生产上线前会被 DBA、安全、运维三方轮流挑毛病然后你返工重来。我建议从第一天就按三层目标建多花的时间不到一小时后面省的是好几天。1.3 Windows 和 Linux 两条路线先想清楚再动手不少人问开发机是 Windows服务器是 Linux是不是两套完全不同的东西不是。WebLogic 的核心安装器是同一个 Java 程序域结构在两边也完全一样都是 config.xml servers 目录 bin 脚本真正的差异集中在四个地方。对比项WindowsLinux安装器执行方式java -jar或双击java -jar需图形库或静默模式系统参数基本不用调靠默认值必须调 ulimit 和内核参数服务化方式installSvc.cmd 注册成 Windows 服务systemd 单元文件或启动脚本典型坑位路径含空格、中文、权限熵池不足导致启动慢、账号权限错乱所以我个人的建议是Windows 用来做开发验证和学习Linux 用来做准生产和生产。两边都按本文走一遍大概各需要两到三小时主要时间花在下载介质和等待安装器解压上。2. 动手前的准备JDK、介质、目录与系统参数2.1 JDK 选型与验证装错版本必踩的坑这是整个搭建过程中最容易翻车的一步而且翻车方式很隐蔽装的时候不报错启动的时候直接一句Unsupported major.minor version或者更晦涩的类加载异常。先说结论**12.2.1.4 稳妥的选择是 JDK 8 的较新小版本8u 系列的后期更新如果你确实需要 JDK 11请先确认你要部署的应用、以及你手上的 12.2.1.4 补丁级别都支持它。**JDK 17 及以上不要碰WebLogic 会直接起不来这不是配置能绕过去的是字节码版本不兼容。具体到操作JDK 装完先验证三件事别急着装中间件# Linux 侧 java -version javac -version echo $JAVA_HOME # 关键确认 java 到底是从哪来的避免系统自带 JDK 抢路径 which java readlink -f $(which java)# Windows 侧cmd java -version echo %JAVA_HOME% where javawhere java或者which java这两条命令看起来多余但我见过太多次环境变量配的是新 JDK实际跑的是系统自带的旧 JDK。原因通常是 PATH 里/usr/bin排在$JAVA_HOME/bin前面或者 Windows 上 Oracle 安装器往 PATH 头插了自己的路径。这个坑不解决后面所有报错都会指向错误方向。还有一个我强烈建议的做法JDK 目录不要放在 WebLogic 的 Middleware 目录里面。装中间件时安装器有一步会让你指定 JDK 路径-jreLoc很多人顺手选了个 Middleware 下的 jdk 目录结果后面换 JDK 或者打补丁时目录关系变得很乱。独立放比如 Linux 上/usr/java/jdk1.8.0_xxxWindows 上D:\jdk\jdk1.8.0_xxx清晰得多。2.2 安装介质获取与校验别省这一步12.2.1.4 的安装器是通用安装包文件名形如fmw_12.2.1.4.0_wls.jar这个包同时包含 WebLogic Server 和 Coherence。还有一个体积更小的 Quick 版本只装 WebLogic 本体适合开发评估用。生产环境我一般用完整通用包的静默模式Quick 包在功能裁剪上有时候会让人困惑比如某些模板找不到不差那点下载时间。包下好之后务必校验哈希。这个环节很多人跳过然后在安装到 60% 的时候收到一个 The installer has detected a corrupted file 或者更莫名的解压错误回头重下又要半小时。校验命令很简单# Linux sha256sum fmw_12.2.1.4.0_wls.jar# Windows PowerShell Get-FileHash .\fmw_12.2.1.4.0_wls.jar -Algorithm SHA256把结果和下载页面上给出的哈希值对一遍字符完全一致再动手。另外提醒一句这个 jar 包有 800MB 以上用命令行java -jar启动时确保你所在的终端会话不会因为 SSH 断线而中断Linux 上建议挂个nohup或者用screen否则安装器跑到一半进程被杀清理残留比重新装还麻烦。2.3 目录规划与 Linux 系统参数、账号准备目录规划这件事装之前花五分钟想清楚能避免后面无数次的路径引用混乱。我常用的方案是ORACLE_BASELinux 上/u01/app/oracleWindows 上D:\oracleORACLE_HOME中间件主目录$ORACLE_BASE/middleware/Oracle_Home或直接$ORACLE_BASE/product/12.2.1.4DOMAIN_HOME/u01/app/oracle/domains/base_domain和中间件目录分开日志、临时目录/u01/app/oracle/tmp专门给安装器用为什么中间件和域要分开因为打补丁、升级中间件的时候域目录通常要保留不动如果两者嵌套在一起操作时容易误删。这个习惯是从无数份运维规范文档里总结出来的不是洁癖。Linux 侧的系统参数是硬性要求不调的话轻则报文件句柄不足重则安装器直接告诉你系统检查未通过。以 oracle 用户为例/etc/security/limits.conf里加oracle soft nofile 65535 oracle hard nofile 65535 oracle soft nproc 8192 oracle hard nproc 8192官方文档给出的下限要低一些但生产上我建议直接给到 65535 和 8192因为 WebLogic 在跑起来之后会开大量线程和套接字。改完记得重新登录验证ulimit -n ulimit -u内核参数/etc/sysctl.conf这块WebLogic 官方给的建议值没有 Oracle 数据库那么激进但按下面这组调一遍不会错fs.file-max 6815744 net.ipv4.ip_local_port_range 9000 65500 net.core.rmem_default 262144 net.core.wmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_max 1048576 kernel.sem 250 32000 100 128sysctl -p生效后sysctl -a | grep file-max确认一下。这里有个经验如果你所在的机器上还跑着其他中间件改这些值之前跟负责这台机器的人确认一下别因为调参把别人的服务搞出问题。账号方面Linux 上不要用 root 装 WebLogic这条路能走通但后患无穷域目录属主混乱、启动脚本权限错乱。新建一个专用账号groupadd oinstall useradd -g oinstall -d /home/oracle oracle passwd oracle然后把/u01的属主给 oraclechown -R oracle:oinstall /u01。Windows 侧相对简单建议用管理员账号安装但安装目录不要放在C:\Program Files下面路径里的空格会在后续脚本里给你制造无穷的引号问题。3. Windows 平台从安装到能登录控制台3.1 图形化安装的 6 个关键节点Windows 上双击 jar 包或者用java -jar启动安装器界面会依次问六类问题。我按顺序把需要你真正做决定的地方标出来其他一路下一步即可。第一个节点是库存目录Inventory Directory。这是 Oracle 通用安装器的机制所有 Oracle 产品共用一个库存目录记录安装信息。第一次装会默认建在C:\Program Files\Oracle\Inventory我建议改成短路径比如D:\oracle\oraInventory避免路径含空格。第二个节点是安装类型。选择典型安装会一次性把 WebLogic Server 和 Coherence 都装上精简安装只装 WebLogic。做开发环境选精简也行但如果你的应用用到 Coherence 缓存后面还得补装不如一次装全。第三个节点是中间件主目录。这里就是前面规划的ORACLE_HOME填D:\oracle\middleware。注意这个路径一旦确定后面建域脚本、补丁、启动脚本全都引用它中途改名的成本很高。第四个节点是JDK 选择。安装器会自动搜索注册表和常见路径里的 JDK搜到的未必是你想要的那个。手动点浏览指到D:\jdk\jdk1.8.0_xxx。第五个节点是安全更新配置。做内网部署可以直接取消勾选通过 My Oracle Support 接收安全更新省掉一个必填的账号验证环节。第六个节点是安装摘要页。这里别急着点安装先截个图。截图这动作看着没什么技术含量但当半年后你要复现这套环境、或者要写交接文档时摘要页上的路径、JDK 版本、组件清单是最准确的记录比回忆靠谱得多。3.2 静默安装response file 与 oraInst.loc图形化适合第一次装但如果你要给十台机器装或者要从脚本一键拉起环境就必须用静默模式。核心是两个文件响应文件和库存指针文件。响应文件wls.rsp的内容大致如下Windows 路径要用双反斜杠转义[ENGINE] Response File Version1.0.0.0.0 [GENERIC] ORACLE_HOMED:\\oracle\\middleware INSTALL_TYPEWebLogic Server DECLINE_SECURITY_UPDATEStrue SECURITY_UPDATES_VIA_MYORACLESUPPORTfalse库存指针文件oraInst.loc更短inventory_locD:\\oracle\\oraInventory inst_groupWindows 上inst_group留空Linux 上填oinstall这是两边的一个小差异。然后执行java -jar fmw_12.2.1.4.0_wls.jar -silent -responseFile D:\setup\wls.rsp -invPtrLoc D:\setup\oraInst.loc -jreLoc D:\jdk\jdk1.8.0_xxx -logLevel info-logLevel info这个参数建议加上静默安装默认输出很少出错了只给你一行结果加了之后能在控制台看到逐步进展。整个静默安装大概三到八分钟取决于磁盘速度。安装完成后检查两个标志D:\oracle\middleware\wlserver\server\lib\weblogic.jar存在D:\oracle\middleware\OPatch目录存在这两个都在说明中间件本体没问题。注意静默安装失败的日志不在命令行里而在%ORACLE_HOME%\..\oraInventory\logs\下面文件名形如installActions时间戳.log。这个日志动辄几万行别硬看直接搜SEVERE或者ERROR关键字。3.3 WLST 离线建域并启动 AdminServer域Domain是 WebLogic 的管理单元一个域里有一个管理服务器AdminServer和若干个受管服务器。配置文件都在域目录里所以建域这个动作本质上就是生成一套配置文件。图形化的建域向导可以通过%ORACLE_HOME%\oracle_common\common\bin\config.cmd启动但我强烈建议直接学 WLST 脚本建域理由有三个可重复、可版本管理、可参数化。图形向导点完之后你根本记不住自己选了哪些选项出问题没法回溯。WLST 是一个基于 Jython 的管理脚本环境建域阶段用离线模式不需要服务器在跑。一个最小可用的建域脚本如下# create_domain.py readTemplate(/D:/oracle/middleware/wlserver/common/templates/wls/wls.jar) # 管理员账号密码 cd(/Security/base_domain/User/weblogic) cmo.setPassword(Welcome1_Change) # 生产模式会要求输入管理员密码启动更安全 setOption(ServerStartMode, prod) setOption(JavaHome, D:/jdk/jdk1.8.0_xxx) # 管理端口 cd(/) cd(Servers/AdminServer) set(ListenAddress, ) set(ListenPort, 7001) # 写域 writeDomain(D:/oracle/domains/base_domain) closeTemplate()执行方式# 先设置环境变量 D:\oracle\middleware\wlserver\server\bin\setWLSEnv.cmd # 然后跑 WLST java weblogic.WLST D:\setup\create_domain.py脚本里有三个地方值得说明。set(ListenAddress, )留空表示监听所有网卡本地开发方便生产环境建议填具体 IP减少暴露面。ServerStartMode设成prod的话启动脚本会要求输入管理员密码dev模式则会自动读取boot.properties免密启动——开发机用dev更省事但生产必须用prod。JavaHome这个选项容易被漏掉不设的话域会继承安装时的 JDK将来换 JDK 就得手改配置文件。建完域后启动cd D:\oracle\domains\base_domain\bin startWebLogic.cmd启动日志在D:\oracle\domains\base_domain\servers\AdminServer\logs\AdminServer.log。看到Server state changed to RUNNING就算成功。浏览器打开http://localhost:7001/console用刚才设的账号密码登录。3.4 注册成 Windows 服务与自启开发机手动启动就够了但如果有 Windows 服务器要对外提供服务注册成服务会方便很多。WebLogic 自带脚本cd %ORACLE_HOME%\wlserver\server\bin set DOMAIN_NAMEbase_domain set SERVER_NAMEAdminServer set USERDOMAIN_HOMED:\oracle\domains\base_domain set PRODUCTION_MODEtrue set WLS_USERweblogic set WLS_PWWelcome1_Change installSvc.cmd跑完之后在服务里能看到一个叫 beasvc base_domain_AdminServer 的服务。有两点必须提醒一是把密码写进脚本或者环境变量存在安全风险生产环境更推荐用boot.properties机制放在域目录的servers/AdminServer/security/下内容是两行用户名密码改完权限收一下二是服务默认启动类型是手动需要到服务属性里改成自动并配置失败重启策略。还有一个 Windows 专属的坑如果服务器上装了杀毒软件或者主机防护类软件WebLogic 服务启动时会因为端口监听、临时文件写入被拦截而超时失败。表现是服务启动后立刻停止。排查方法是到AdminServer.log里找Unable to bind或者超时相关记录然后把 WebLogic 的安装目录、域目录、JDK 目录都加进白名单。4. Linux 平台静默安装 建域 受管服务器4.1 静默安装的落地脚本Linux 上如果没有图形界面图形化安装器根本起不来会报Cant connect to X11 window server所以静默模式不是可选项而是唯一选项。好处是参数和 Windows 端几乎一致只是路径风格不同。响应文件wls.rsp[ENGINE] Response File Version1.0.0.0.0 [GENERIC] ORACLE_HOME/u01/app/oracle/middleware INSTALL_TYPEWebLogic Server DECLINE_SECURITY_UPDATEStrue SECURITY_UPDATES_VIA_MYORACLESUPPORTfalse库存文件oraInst.locinventory_loc/u01/app/oracle/oraInventory inst_groupoinstall安装命令export TMP/u01/app/oracle/tmp export TMPDIR$TMP mkdir -p $TMP /u01/app/oracle/jdk1.8.0_xxx/bin/java \ -jar /u01/soft/fmw_12.2.1.4.0_wls.jar \ -silent \ -responseFile /u01/soft/wls.rsp \ -invPtrLoc /u01/soft/oraInst.loc \ -jreLoc /u01/app/oracle/jdk1.8.0_xxx \ -logLevel info这里TMP和TMPDIR两个环境变量必须提前设而且要保证这个目录所在的分区有至少 1GB 空间。安装器会把 jar 包解压到临时目录如果/tmp是个独立的小分区有些系统只给 500MB安装会在中途报一个含糊的磁盘空间不足错误。把临时目录指到/u01下面是最省事的做法。另外如果你的服务器是国产化发行版或者较新的内核安装器启动时可能报系统检查不通过。这通常是安装器脚本里的内核版本判断逻辑太老导致的可以用-ignoreSysPrereqs跳过检查。但要注意跳过检查不等于问题不存在装完之后要重点验证启动是否正常、有没有依赖库缺失的报错。4.2 环境变量与启动脚本定制Linux 上不需要像 Windows 那样注册系统服务但要做得规范需要处理三件事环境变量、启动脚本、JVM 内存参数。环境变量我习惯写在域目录的启动脚本里而不是全局/etc/profile原因是全局变量容易被其他应用干扰。在$DOMAIN_HOME/bin/setDomainEnv.sh前面加上export JAVA_HOME/u01/app/oracle/jdk1.8.0_xxx export PATH$JAVA_HOME/bin:$PATH export USER_MEM_ARGS-Xms4096m -Xmx4096m -XX:MetaspaceSize512m -XX:MaxMetaspaceSize512m -Djava.security.egdfile:/dev/./urandom重点说USER_MEM_ARGS里的几个参数这是实际调优里最关键的部分。-Xms和-Xmx设成一样大是为了避免堆在运行时反复扩张收缩。WebLogic 默认的堆设置偏小不同版本默认值在 256MB 到 512MB 之间生产环境一定要改。具体给多少我的算法是先看这台机器上要跑几个受管服务器把可用物理内存分成 N 份每份再留出 30% 给系统页缓存和堆外内存。举个例子16GB 内存的机器跑一个 AdminServer 加两个受管服务器每个给 4GB 是合理的剩下 4GB 留给操作系统。-XX:MetaspaceSize和-XX:MaxMetaspaceSize是 JDK 8 之后的永久代替代品。WebLogic 会加载大量类和动态生成的代理类不设上限的话Metaspace 会慢慢涨到吃光物理内存。生产上给 512MB 起步比较稳。-Djava.security.egdfile:/dev/./urandom这个参数是 Linux 上的经典优化点路径里那个/./不是笔误是绕过 JVM 内部对/dev/urandom的特殊处理路径。作用是让随机数生成不阻塞在熵池上。Linux 默认从/dev/random取随机数熵不够时会阻塞等待表现就是 WebLogic 启动卡在Starting WLS ...十分钟以上。这个坑我第一次遇到时以为是磁盘问题查了很久。启动cd /u01/app/oracle/domains/base_domain/bin nohup ./startWebLogic.sh /u01/app/oracle/domains/base_domain/startup.out 21 用nohup加后台运行避免 SSH 断开时把服务带走。日志除了 stdout 重定向主日志依然在servers/AdminServer/logs/AdminServer.log。4.3 WLST 建域脚本逐段拆解Linux 上的建域脚本比 Windows 版多几个实用功能建受管服务器、建集群、建机器Machine用于节点管理器托管。下面这份是我常用的模板逐段说明。# wlst_create_domain.py readTemplate(/u01/app/oracle/middleware/wlserver/common/templates/wls/wls.jar) # 1. 管理员账号 cd(/Security/base_domain/User/weblogic) cmo.setPassword(Welcome1_Change) setOption(ServerStartMode, prod) setOption(JavaHome, /u01/app/oracle/jdk1.8.0_xxx) setOption(OverwriteDomain, true) # 2. 管理服务器端口 cd(/Servers/AdminServer) set(ListenAddress, 0.0.0.0) set(ListenPort, 7001) # 3. 建受管服务器 cd(/) create(app_server_1, Server) cd(/Servers/app_server_1) set(ListenAddress, 0.0.0.0) set(ListenPort, 8001) # 4. 建集群并把受管服务器加进去 cd(/) create(app_cluster, Cluster) cd(/Clusters/app_cluster) set(ClusterMessagingMode, unicast) cd(/Servers/app_server_1) set(Cluster, app_cluster) # 5. 写域 writeDomain(/u01/app/oracle/domains/base_domain) closeTemplate()逐个说关键点。set(ListenAddress, 0.0.0.0)在 Linux 上比留空更明确避免某些发行版上 IPv6 优先导致的绑定困惑。受管服务器端口我习惯从 8001 开始编号和 7001 形成规律方便记忆和排查。集群的ClusterMessagingMode设成unicast是 12c 之后的推荐做法老版本默认用组播multicast而现在很多网络环境默认禁掉了组播会导致集群内服务器互相发现不了日志里出现大量Multicast socket相关的警告。改成单播就绕过了这个问题。写域那一步如果目标目录已存在默认会报错退出OverwriteDomain设成true会直接覆盖——这个选项方便脚本重复执行但生产上一定要小心覆盖意味着旧域的配置全丢。我一般把这一行注释掉宁可手动删目录。建完域之后建议立刻做一件事把$DOMAIN_HOME/config/config.xml复制一份存到域目录外面。这个文件是整个域配置的核心服务器启动时读它误改或者损坏都会导致启动失败。有了备份恢复就是一条cp命令的事。4.4 节点管理器与受管服务器AdminServer 起来之后受管服务器有两种启动方式。手动方式是直接调脚本cd $DOMAIN_HOME/bin ./startManagedWebLogic.sh app_server_1 http://127.0.0.1:7001这条命令要传两个参数受管服务器名和管理服务器地址。启动过程中会提示输入 weblogic 的密码。手动方式适合调试缺点是管理服务器重启后受管服务器不知道两边状态容易不一致。规范做法是用节点管理器Node Manager托管。节点管理器是一个独立的小进程跑在每台机器上监听 5556 端口负责按照管理服务器的指令启停本机的受管服务器。配置过程分三步。第一步启动节点管理器cd $DOMAIN_HOME/bin nohup ./startNodeManager.sh nodemanager.out 21 第二步在管理控制台里创建机器Machine填上主机名和节点管理器端口然后做一次测试节点管理器连接。第三步把受管服务器指派到这台机器上之后就可以在控制台里一键启停。节点管理器的配置细节还有一层它有自己的nodemanager.properties里面有SecureListener、NodeManagerHome、日志路径等参数。默认配置下节点管理器和管理服务器之间的通信是不加密的内网可以接受跨网段部署建议开启 SSL 并导入证书。这块展开讲能写一整篇这里先记个印象。提示节点管理器启动失败最常见的原因是nodemanager.properties里的ListenAddress和实际网卡不匹配以及DomainsFile指向的域列表路径写错。日志在$DOMAIN_HOME/nodemanager/nodemanager.log出错先看这个文件的前 30 行。5. 踩坑实录安装、建域、启动三类问题排查5.1 安装阶段从没反应到装了一半退出安装阶段的问题有两个特点报错信息含糊日志藏在很深的地方。我把遇到频率最高的几个整理出来。安装器启动后长时间无响应。先确认是不是在无图形界面的 Linux 上用了图形模式检查echo $DISPLAY为空就说明要用-silent。如果已经有DISPLAY但连不上说明 X11 转发没配好。另外中文环境下安装器界面可能因为字体缺失显示成方框加个-Dfile.encodingUTF-8有时能改善。报 There is not enough space on the disk。除了目标目录空间还要检查三点临时目录/tmp的空间、库存目录所在分区空间、以及 inode 数量df -i。inode 耗尽同样会报空间不足这个原因很隐蔽我遇到过一台机器里的目录塞了几十万个小文件实际空间还剩很多但 inode 满了。静默安装走到一半退出日志中看到 The Java heap space。安装器自身的 JVM 内存不够。解决方法是给安装器加参数java -Xmx2048m -jar fmw_...jar ...。这个参数的位置有讲究必须放在-jar之前放在后面会被当成程序参数忽略。装完之后weblogic.jar找不到。说明安装其实没走完去oraInventory/logs里找最新的installActions日志搜SEVERE。常见原因是响应文件里的ORACLE_HOME路径不存在或者权限不对安装器会尝试创建父目录但有时会失败。5.2 建域与启动阶段启动卡住和状态异常AdminServer 启动卡在某个阶段不动。第一章到第四章里提过熵池问题Linux 上的第一嫌疑就是这个加-Djava.security.egdfile:/dev/./urandom再看。如果不是熵池看日志里最后一条输出卡在Starting Security Services通常是证书或者密钥库问题卡在Starting JMS多半是 JDBC 数据源连不上。启动报 address already in use。端口被占了。查一下netstat -tunlp | grep 7001Linux 上常见的是上一次没正常关掉的进程还在用ps -ef | grep java找或者有别的服务用了同端口。Windows 上用netstat -ano | findstr 7001找到 PID再去任务管理器对应。控制台能登录但受管服务器起不来。按顺序检查管理服务器地址是否可达telnet 管理IP 7001、受管服务器的boot.properties或启动时输入的密码是否正确、节点管理器的连接测试是否通过、受管服务器自己的日志在servers/app_server_1/logs/下里有没有异常。启动过程中抛 Unsupported major.minor version。JDK 版本不匹配回头查第二章的 JDK 校验步骤重点是which java和$JAVA_HOME是否一致。日志里刷 No space left on device 但df看着还有空间。检查df -i的 inode以及是不是有个日志文件被某个进程一直持有lsof | grep deleted空间已经被删掉但进程没释放句柄这种情况重启服务才能回收。5.3 网络、主机名与时间的三处隐蔽问题有些问题不在 WebLogic 本身但会让 WebLogic 表现得很不正常而且排查时容易往错误方向找。第一处是主机名解析。WebLogic 启动时会解析本机主机名如果/etc/hosts里没有对应的记录服务会尝试用 DNS 查询超时之后可能绑定到错误地址。检查方式hostname看主机名然后ping $(hostname)看能不能解析到 127.0.0.1 或者本机实际 IP。解决办法是往/etc/hosts里加一行127.0.0.1 hostname。Windows 上对应的文件是C:\Windows\System32\drivers\etc\hosts。第二处是时间同步。WebLogic 的会话、集群心跳、证书有效期校验都依赖时间。如果服务器时间偏差过大会出现会话频繁失效、集群节点互相认为对方故障、证书校验失败等现象。Linux 上确认时间同步服务在跑Windows 上确认与域控或者标准时间服务器同步正常。第三处是防火墙。除了管理端口 7001 和受管服务器端口集群之间、节点管理器、JMS 等组件还会用一批动态端口。如果网络策略比较严建议把这个域的端口范围规划清楚并提前报备而不是启动之后再一个个发现被拦。这一点在跨网段部署时特别重要很多偶尔连不上的诡异现象最后都指向某个动态端口被间歇性拦截。5.4 问题速查表把上面这些整理成一张表方便现场对着查。现象首要怀疑对象快速验证方式启动卡住不动熵池、证书、数据源日志最后一行 cat /proc/sys/kernel/random/entropy_avail端口被占用残留进程、其他服务netstat -tunlp版本不兼容报错JDK 路径混乱which java与$JAVA_HOME比对静默安装中途退出临时目录空间、inodedf -h和df -i受管服务器连不上管理服务器密码、主机名解析、端口telnet测试 双方日志控制台页面打不开但服务是 RUNNING防火墙、ListenAddress 绑定curl -I http://ip:7001/consoleMetaspace 持续增长最终 OOM未设 MaxMetaspaceSizejstat -gcmetacapacity pid6. 交付前建议做的几件事6.1 目录、日志与权限的规范化环境能跑起来只是及格线。如果这套环境要交给别人维护目录和权限的规范化程度决定了后面别人接手的痛苦程度。我的习惯是做一张目录对照表贴在域的 README 里中间件主目录在哪、JDK 在哪、域在哪、日志在哪、备份在哪。看着很基础但真实场景里接手的人往往要花半小时在文件系统里翻找。日志方面WebLogic 的日志分好几个层级服务器日志、HTTP 访问日志、数据源日志、JMS 日志还有 JDK 自己的 GC 日志。GC 日志一定要单独配置输出方式是往启动参数里加export USER_MEM_ARGS$USER_MEM_ARGS -Xloggc:/u01/app/oracle/domains/base_domain/logs/gc.log -XX:PrintGCDetails -XX:PrintGCDateStamps出内存问题时这份 GC 日志是第一手证据没有它只能靠猜。同时建议配置日志轮转策略按大小和时间双条件不然一年之后日志目录能把磁盘吃满。权限上有两个常见疏漏域的security目录存着boot.properties、密钥库权限应该收紧到 700 或者 750只允许运行账号访问安装目录和域目录的属主必须是同一个运行账号如果安装时用了 root、运行时用了 oracle会出现日志文件写不进去临时文件创建失败这类看着毫无道理的问题。6.2 备份、版本记录与恢复演练我见过太多人装完之后什么记录都不留一年后要迁移或者重建时完全靠猜——JDK 是哪个小版本、有没有打补丁、系统参数改过哪些。我的做法是装完之后立刻生成一份环境快照内容至少包含OS 版本和内核版本uname -a、cat /etc/os-releaseJDK 版本和路径java -version、readlink -f $(which java)WebLogic 版本java weblogic.version已打补丁列表opatch lspatches系统参数当前值ulimit -a、sysctl -a的关键项域的目录结构和config.xml把这些存进一个文本文件放进域目录往后每次变更都追加一行记录。这个习惯的价值在故障恢复时体现得特别明显。config.xml之外还建议定期备份整个$DOMAIN_HOME/config目录和security目录。前者是域配置后者是密钥库和凭据两者合起来才能完整恢复一个域。备份频率我一般设成每天一次保留最近两周配置变更后手动再备一次。至于恢复演练不用太复杂找一台测试机用备份的配置目录替换掉新建域的同名目录然后启动看能不能正常起来。走一遍这个流程你会发现自己备份的东西到底缺不缺、路径写死在配置文件里的问题该怎么处理。这比任何文档都让人安心。6.3 一份可以照着念的交接清单交接的时候我一般把下面这份清单直接给对方逐条确认避免口头描述带来的信息损耗。管理控制台地址、账号以及生产模式下密码的获取方式域的目录位置、受管服务器列表、端口分配表节点管理器是否启用、端口、以及控制台里机器配置的对应关系启动和停止的标准操作含启动命令、日志位置、正常启动的标志已配置的数据源、JMS 资源清单及对应的后端连接信息不写密码指路系统参数和 JVM 参数的当前值以及为什么这么设备份位置、备份频率、恢复操作步骤已知遗留问题比如某个告警不影响使用、某个端口规划还没落地这份清单写下来大概两页纸但能让接手的人从摸索三天变成上手半天也能让你自己少接十来个追问的电话。我个人在实际操作中的体会是WebLogic 环境搭建这件事真正花时间的从来不是点下一步而是把版本、参数、路径这三样东西理顺。12.2.1.4 这套东西本身足够成熟官方文档也齐全卡住你的大概率不是产品本身而是机器上的环境细节——JDK 抢路径、熵池不够、临时目录没空间、主机名解析不到。把第二章和第五章的检查项在动手前一小时过一遍后面基本就是一路平推。另外别嫌记录麻烦第一次装环境时顺手留的截图和版本快照往往就是半年后救你一命的东西。下次如果你要把这套环境做成一键脚本可以从静默安装的响应文件加 WLST 建域脚本这条路走这两个文件参数化之后整台机器从裸系统到能登录控制台真的就是十几分钟的事。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Delphi下FireDAC连接mysql数据库零起点:TaoToken统一Key接入与连通性验证 2026/10/2 12:05:11

Delphi下FireDAC连接mysql数据库零起点:TaoToken统一Key接入与连通性验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
O 水准 2026 最后一届:新加坡公立升学的两条通道 2026/10/2 12:05:10

O 水准 2026 最后一届:新加坡公立升学的两条通道

对许多中国家庭来说,「让孩子去新加坡读公立学校」最初只是一个方向。真正开始执行时,才会遇到一连串具体问题:从哪一年进来?考什么?进来之后走哪条路? 2026 年,是新加坡 O 水准(GCE…

阅读更多 →
兴义老房翻新服务团队 2026/10/2 12:05:09

兴义老房翻新服务团队

在兴义做老房改造十来年,我越来越确定一件事:老房翻新和普通装修,根本不是一回事。 同样是一套七八十平的旧房,有人4天改完厨房只花7000元,有人拖了两个月还在扯皮;有人翻新后收纳多出近30%,有人…

阅读更多 →
如何使用 Cursor 进行日常办公:把 Base URL 改到 TaoToken 的实操大纲 2026/10/2 12:05:08

如何使用 Cursor 进行日常办公:把 Base URL 改到 TaoToken 的实操大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AI编程革命:Codex脚本开发实战指南与TaoToken统一API接入 2026/10/2 12:05:07

AI编程革命:Codex脚本开发实战指南与TaoToken统一API接入

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
如何在Custom类添加其它自定义类?TaoToken 场景下的 Addobject 与 Init 实践 2026/10/2 12:04:59

如何在Custom类添加其它自定义类?TaoToken 场景下的 Addobject 与 Init 实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉