Oracle Access Manager: java.lang.OutOfMemoryError

leak_chart

One of the trainee from our previous batch encountered issue while accessing the oamconsole URL:   http//<Hostname>:<Admin Port>/oamconsole.

To find the root cause check the Admin Server log file located at $DOMAIN_HOME/servers/AdminServer/logs and in our case, it was showing below error messages:

<Error> <HTTP> <hostname> <AdminServer> <[ACTIVE] ExecuteThread: ’14’ for queue: ‘weblogic.kernel.Default (self-tuning)’> <<WLS Kernel>> <> <0000wJ81aCT7y0G6yzYfMG000024000F0n> <1424169946099> <BEA-101020> <[ServletContext@13260635[app:em module:/em path:/em spec-version:2.5]] Servlet failed with Exception

java.lang.OutOfMemoryError: Java heap space

at java.lang.reflect.Array.newArray(Native Method)

at java.lang.reflect.Array.newInstance(Array.java:70)

at oracle.jdbc.driver.BufferCache.get(BufferCache.java:229)

at oracle.jdbc.driver.PhysicalConnection.getCharBuffer(PhysicalConnection.java:12333)

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)

at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:217)

at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPrepared Statement.java:947)

Root Cause:

Since, Admin Console is deployed on Admin Server and is accessible via Admin Port /oamconsole ( http//<Hostname>:<Admin Port>/oamconsole) 

oam_admin

The jvm size at the moment  was 500 MB for Admin Server, it should be in between 1Gb to 2Gb , because we access OAM console on top of admin server.

Solution:

Temporary Fix:

Bounce the Admin server.

Permanent Fix:

1. Change the Admin server jvm settings as shown below in setDomainEnv.sh script located under $DOMAIN_HOME/bin.

if [ “${SERVER_NAME}” == “AdminServer” ] ; then

      MEM_ARGS=”-Xms2048m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=  

      512m”

      export MEM_ARGS

fi.

2. Bounce the Admin server and you should be able to access the OAM console.

Note: You can see the modified jvm settings in Admin server Log.

If you want to learn more in  Oracle Access Manager, then register for our free minicourse by clicking on below image.

OAM_img

About the Author Nancy Kamboj

Oracle Consultant at K21 Technologies - Oracle Gold Partner specialising in Design, Implement, and Support.

Leave a Comment: