Support Article
SQLRecoverableException installing Pega 7.2 on Oracle/unix
SA-20731
Summary
Trying to install Pega 7.1 on Oracle database, and is running install from a Unix environment.
Several hours into the import when it is trying to import one of the application bundle components it fails.
Installing again fails at about the same point, around the 57 or 58th application bundle import.
Error Messages
19:53:04,302 [ main] [ ] [ ] ( internal.util.MoveLog) INFO - Operation Status: Started import of application bundle component pr4_rule_07.10.01.zip (58 of 87)...
[java] 2016-03-01 19:53:04,371 [ main] [ ] [ ] (y.internal.PRRuleMgmtUtilsImpl) INFO - pr4_rule_07.10.01.zip is v6 Archive
[java] Caught SQLException while reading prprivate.jar!com/pega/pegarules/deploy/internal/util/OptimizationCandidateListImpl$CandidateImpl.class
[java] java.sql.SQLRecoverableException: IO Error: Connection timed out
[java] at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:967)
[java] at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:929)
[java] at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1034)
[java] at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3820)
[java] at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3867)
[java] at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1502)
[java] at com.pega.pegarules.configdbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:99)
[java] at com.pega.pegarules.configdbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:99)
[java] at com.pega.pegarules.internal.bootstrap.phase2.jdbc.AbstractJdbcJarReader.readEntry(AbstractJdbcJarReader.java:334)
[java] at com.pega.pegarules.internal.bootstrap.phase2.jdbc.AbstractJdbcJarReader.readBestEntry(AbstractJdbcJarReader.java:294)
[java] at com.pega.pegarules.internal.bootstrap.phase2.jdbc.PegaJdbcURLConnection.readBestEntry(PegaJdbcURLConnection.java:192)
[java] at com.pega.pegarules.internal.bootstrap.phase2.loaderfs.PRClasspathJDBC.findResource(PRClasspathJDBC.java:109)
[java] at com.pega.pegarules.internal.bootstrap.phase2.loaderfs.PRClasspath.findResource(PRClasspath.java:182)
[java] at com.pega.pegarules.internal.bootstrap.phase2.loaderfs.PRClasspath.findResource(PRClasspath.java:165)
[java] at com.pega.pegarules.bootstrap.loader.PRAppLoader.findResourceInternal(PRAppLoader.java:979)
[java] at com.pega.pegarules.bootstrap.loader.PRAppLoader.findClassInternal(PRAppLoader.java:853)
[java] at com.pega.pegarules.bootstrap.loader.PRAppLoader.findClass(PRAppLoader.java:459)
[java] at com.pega.pegarules.bootstrap.loader.PRAppLoader.loadClass(PRAppLoader.java:761)
[java] at com.pega.pegarules.bootstrap.loader.PRAppLoader.loadClass(PRAppLoader.java:649)
Steps to Reproduce
Installing Pega 7.2 on an Oracle database from a Unix environment.
Root Cause
A defect or configuration issue in the operating environment.
This issue is seen during an install or upgrade on an Oracle database on Unix because of the way the newer versions of the Oracle JDBC driver gathers entropy.
This issue has nothing to do with the install code but rather with the way the Oracle JDBC driver works on Unix. Basically the Oracle JDBC drivers by default uses /dev/random.
When running in an environment where there this is not a lot of noise the entropy pool will eventually be empty and the connection will be reset. Earlier versions of the Oracle JDBC driver did not see this issue.
Resolution
Make the following change to the operating environment: Using an old version of the Oracle JDBC driver allows the installation to complete without issue.
Another option is to use Oracle's suggested workaround of setting the system property
-Djava.security.egd=file:///dev/urandom
Published February 5, 2018 - Updated October 8, 2020
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.