Oracle EBS 外部应用节点-OOM

前言

何为外部应用节点?外部应用节点提供给供应商使用的节点,且该节点不使用Java Form,同时共享一个数据库。但外部节点的内存使用及CPU均是使用它本身的服务器资源。不会造成资源争用的问题。

问题

用户登录EBS时出现Weblogic错误,从架构上分析,外部节点仅使用OACORE、Weblogic服务。所以问题基本上出现在这两个地方。分析其服务日志就能得出问题出现的原因。

错误日志

bash 复制代码
2026-06-16 9:45:45
Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been d
isabled.
Java HotSpot(TM) 64-Bit Server VM warning: Try increasing the code cache size using -XX:ReservedCodeCacheSize=
Code Cache  [0x00007f3b009a7000, 0x00007f3b039a7000, 0x00007f3b039a7000)
 total_blobs=10255 nmethods=4543 adapters=1137 free_code_cache=3074Kb
java.lang.OutOfMemoryError: Java heap space
	at java.lang.reflect.Array.newInstance(Array.java:70)
	at oracle.jdbc.driver.BufferCache.get(BufferCache.java:215)
	at oracle.jdbc.driver.PhysicalConnection.getCharBuffer(PhysicalConnection.java:12342)
	at oracle.jdbc.driver.OracleStatement.prepareAccessors(OracleStatement.java:1112)
	at oracle.jdbc.driver.T4CTTIdcb.receiveCommon(T4CTTIdcb.java:283)
	at oracle.jdbc.driver.T4CTTIdcb.receive(T4CTTIdcb.java:150)
	at oracle.jdbc.driver.T4C8Oall.readDCB(T4C8Oall.java:895)
	at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:389)
	at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:205)
	at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:548)

日志分析

1、 由于 PSPermGen 内存耗尽,GC 无法自动回收内存,导致 JIT 编译器被禁用,系统执行效率显著下降。多数线程因无法分配内存而长期处于等待状态,最终致使 Web 页面响应缓慢,约 10 秒后触发 WebLogic 错误。

2、 外部节点数据源 EBSDataSource 抛出连接错误,导致 OHS 服务与 内部应用节点之间的通信中断,相关进程无法继续执行。

3、 外部节点中的核心服务 OACORE_SERVER 出现错误,最终导致外部节点实例发生崩溃。

AWR报告分析

1、数据库负载

基于 CPU 核心数(32)、Elapsed Time(60.07 分钟)及 DB Time(67.32 分钟)进行计算,数据库实际负载仅为 3.5%,表明系统存在大量空闲时间,整体资源利用率较低。

2、内存分析

PGA:规划值为 1024M,当前使用量已达 4474M,严重超出规划;

shared_pool_size(SGA 参数):规划值为 2000M,当前值为 2960M,同样超出规划。

Shared_pool_size 规划大小:

PGA的规划大小:

实际使用情况:

问题总结

1、 此次 外部节点 实例崩溃的根本原因在于内存耗尽,导致大量线程持续处于等待状态,GC 无法自动回收内存,进而触发 JIT 编译器被禁用。系统随后抛出 java.lang.OutOfMemoryError: GC overhead limit exceeded

与 java.lang.OutOfMemoryError: Java heap space 错误,最终致使 OACORE_SERVER 核心服务无法正常提供响应。

2、 经数据库层面分析,本次 外部节点 崩溃并非由 SQL 语句直接引起,但数据库端仍存在一定性能瓶颈,主要体现在 USER I/O 与内存资源分配方面,建议重新规划并优化相关内存配置。

解决方案

调整 外部节点 的 OACORE_SERVER 内存参数,使其与 内部节点 环境保持一致。具体操作如下:

a) 登录 WebLogic 管理控制台;

b) 进入 Environment → Servers → oacore_server2 → Server Start;

c) 点击 Lock & Edit 以解锁配置;

d) 修改启动参数,将内存配置由 -XX:PermSize=128m -XX:MaxPermSize=384m -Xms1024m -Xmx1024m 调整为 -XX:PermSize=128m -XX:MaxPermSize=384m -Xms2048m -Xmx4096m。

相关推荐
传说故事9 小时前
数据库中一些常用英文单词含义
数据库·oracle
dotnet9012 小时前
批量生成所有表的修改脚本
数据库·sql·oracle
蓝鸟197414 小时前
EXISTS子查询SELECT 1与SELECT *到底有无区别?Oracle生产实测解惑(附HIS业务SQL案例)
oracle·his系统·sql优化·数据库调优·exists
一十九的酒16 小时前
Oracle Data Guard 备库归档日志满导致同步中断的解决实战
数据库·oracle·oracle-dg 续传·归档空间满
回眸&啤酒鸭19 小时前
【回眸】Memmy Agent 智能体落地应用全景指南
数据库·oracle
一只专注api接口开发的技术猿19 小时前
OpenClaw 实战:搭建京东商品监控与简易数据分析脚本
大数据·jvm·数据库·oracle·数据分析
Irene199119 小时前
Oracle 连接避坑指南:环境+配置+账号
数据库·oracle
鹿鸣天涯20 小时前
应急响应:MySQL日志分析
mysql·安全·adb·oracle
仙宇觉尘2 天前
记一次 .NET 某中医药附属医院门诊系统 崩溃分析
数据库·oracle·.net
NineData2 天前
Oracle 长事务正在消耗 undo 空间,ChatDBA 能提前发现
数据库·sql·oracle·agent·ninedata·回滚·长事务