Thursday, January 19, 2012

WebSphere Application Server -- ORA-03120 error solution

WAS server 6.1.0.27 running on Solaris
Back-end Database: Oracle 9i -9.2.0.4.0

Application running on WAS is writing the XML response to table CLOB field but the following error shows in the SystemOut.log:

 writeClob failed on com.xxxx.xxx.

Checked the application log and found ORA-03120 error (Integer Overflow):

Queried Oracle DBA and DBA did not notice any error on Database side. The application running on Production environment has no this kind of error.
Compared the SystemOut.log on Prod Server and Test Server and found that Test Server is using Oracle JDBC driver 11.2.0.1.0 (ojdbc5.jar) but Prod Server is using Oracle JDBC driver 10.2.0.2.0 (ojdbc14.jar). then the root cause should be on Oracle JDBC driver.
Checked Test Server environment and found both ojdbc14.jar and ojdbc6.jar are at /IBM/WebSphere/AppServer/oracleDriver directory, which is ${ORACLE_JDBC_DRIVER_PATH}.  Although the classpath in WAS JDBC Provider was specified as " ${ORACLE_JDBC_DRIVER_PATH}/ojdbc14.jar", the Server still using JDBC driver 11.2.0.1.0 to connect to remote Oracle 9i Database.
To let the server use the old Oracle JDBC driver 10.2.0.2.0, we have to log on to WAS admin console, go to "Servers"->"Application servers"->"server1". Expand "Java and Process Management", click "Process Definition"->"Java Virtual machine", put "${ORACLE_JDBC_DRIVER_PATH}/ojdbc14.jar" into classpath. Then save it and restart the server.
After server is restarted, we can see the server is using old Oracle JDBC driver 10.2.0.2.0 and the ORA-03120 error is gone.

No comments:

Post a Comment