Support Article

Not able to import RAP along with Oracle 12c

SA-37430

Summary



User was unable to import a Rule-Admin-product (RAP) after upgrading to Pega 7.2.2 or Oracle 12c 1.0.2.0.

As soon as the import starts, the application hangs and thread dump gets triggered in the logs.


Error Messages



"ajp-bio-8009-exec-52" Id=171 in RUNNABLE (running in native)
BlockedCount : 1, BlockedTime : -1, WaitedCount : 1, WaitedTime : -1
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:152)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at oracle.net.ns.Packet.receive(Packet.java:311)
at oracle.net.ns.DataPacket.receive(DataPacket.java:105)
at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:305)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:249)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:171)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:89)
at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:123)
at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:79)
at oracle.jdbc.driver.T4CMAREngineStream.unmarshalUB1(T4CMAREngineStream.java:426)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:390)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:566)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:202)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:45)
at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:766)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:897)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1034)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1244)
- locked oracle.jdbc.driver.T4CConnection@2c5c52eb

at oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:420)
at com.pega.pegarules.data.internal.access.oracle.SQLGeneratorOracle.getCompoundKeyInfo(SQLGeneratorOracle.java:308)
at com.pega.pegarules.data.internal.access.oracle.SQLGeneratorOracle.getIndexInfo(SQLGeneratorOracle.java:266)
at com.pega.pegarules.data.internal.access.SQLGenerator.generateTableXMLForClass(SQLGenerator.java:2571)
at com.pega.pegarules.data.internal.access.DatabaseSchemaGeneratorImpl.generateTableXMLForTable(DatabaseSchemaGeneratorImpl.java:193)
at com.pega.pegarules.data.internal.access.DatabaseImpl.generateTableXMLForTable(DatabaseImpl.java:7201)
at com.pega.pegarules.data.internal.access.DatabaseImpl.generateTableXMLForTable(DatabaseImpl.java:7174)
at com.pega.pegarules.data.internal.ddlcomp.SchemaChangeUtilityDataModelImpl.generateTableXMLForTable(SchemaChangeUtilityDataModelImpl.java:98)
at com.pega.pegarules.data.internal.ddlcomp.ObjectMetadataExtractor.extractObjectMetadata(ObjectMetadataExtractor.java:210)
at com.pega.pegarules.data.internal.ddlcomp.ImportDDLGenerator.generateDDL(ImportDDLGenerator.java:141)
at com.pega.pegarules.data.internal.ddlcomp.SchemaChangeUtilityImpl.generateDDL(SchemaChangeUtilityImpl.java:159)
at com.pega.pegarules.deploy.internal.util.SchemaImporterTool.getDDL(SchemaImporterTool.java:705)
at com.pega.pegarules.deploy.internal.util.SchemaImporterTool.getDDL(SchemaImporterTool.java:730)
at com.pega.pegarules.deploy.internal.util.SchemaImporterTool.getDDL(SchemaImporterTool.java:602)
at com.pega.pegarules.deploy.internal.util.SchemaImporterTool.getDDL(SchemaImporterTool.java:597)
at com.pega.pegarules.deploy.internal.util.SchemaImporterTool.getDDL(SchemaImporterTool.java:569)
at com.pega.pegarules.deploy.internal.util.SchemaImporterTool.getDDL(SchemaImporterTool.java:549)


Steps to Reproduce



Import a RAP in Pega 7.2.2 or Oracle 12c 1.0.2.0. The application never gets past Step 1.


Root Cause




After analysis of the log files and the awr reports, it was established that the underperforming query was getting generated from this method SQLGeneratorOracle.getCompoundKeyInfo() which involved all_constraints.

On further investigation, it was identified to be an Oracle bug on Oracle 10/Oracle 12c 1.0.2 where a query reagrding all_constraints burns CPU all the time and never finishes parsing.


Resolution




User is suggested to apply the following local-change on their database and the import is also successful:

Alter system set “_optimizer_push_pred_cost_based”=false;

But Oracle does not recommend setting this parameter at the system level and significant performance impacts were observed in the environment if this is set permanently, Pega suggested to provide a hotfixHFix-33753 for the same where this parameter will be set at the query or session level only.

After applying this HFix-33753, no performance impacts were observed and the import happened normally.

Published May 3, 2017 - Updated June 7, 2017

Have a question? Get answers now.

Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.