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。

相关推荐
一十九的酒4 小时前
Oracle 12c 标准版无缝升级企业版实战记录
数据库·oracle·标准版切换到企业版
2501_942389557 小时前
特斯拉的车辆摄像头每四天为AI训练集采集的数据量
人工智能·hadoop·zookeeper·oracle·时序数据库·memcache
山峰哥8 小时前
数据库工程与SQL优化实战指南‌
数据库·sql·oracle·深度优先·宽度优先
宠友信息11 小时前
Spring Boot与异步审核构建仿小红书源码内容发布全流程
java·数据库·spring boot·redis·mysql·oracle·uni-app
—Miss. Z—14 小时前
计算机二级MySQL选择题考点Ⅱ
数据库·mysql·oracle
Irene199114 小时前
数据迁移,源端探查(以 Oracle 为例)的三种实现层次:工具化(MTK)、脚本化(最主流方式)和手工查询(测试学习)
oracle·数据迁移·源端探查
矜持的左手14 小时前
硬件故障后数据文件大小不对故障处理—Oracle碎片扫描恢复
数据库·oracle
欢呼的太阳1 天前
数据库设计Step by Step (10)——范式化
服务器·数据库·oracle
多巴胺梦想家1 天前
数据库恢复技术:当灾难来临
网络·数据库·oracle