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 hotfix HFix-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 June 7, 2017 - 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.