Article - CS374124

Unexpected high amount of queries execution via Oracle ADT in Windchill

Modified: 11-Apr-2025   


Applies To

  • Windchill PDMLink 11.0 to 12.0
  • Oracle 19c + JDBC driver 19.6+

Description

  • Unexpected high amount of queries execution via Oracle ADT (Abstract Data Types)
  • Oracle package dbms_pickler used to convert array data type
  • Queries executed :
begin :1 := sys.dbms_pickler.get_type_shape(:2,:3,:4,:5,:6,:7,:8,:9,:10); end;

SELECT /*+ NOPARALLEL */ 1, A.NAME, A.ATTRIBUTE#, DECODE(AT.TYPE
CODE, 9, DECODE(A.CHARSETFORM, 2, 'NVARCHAR2', ATO.NAME), 96, DE
CODE(A.CHARSETFORM, 2, 'NCHAR', ATO.NAME), 112, DECODE(A.CHARSET
FORM, 2, 'NCLOB', ATO.NAME), ATO.NAME), DECODE(BITAND(AT.PROPERT
IES, 64), 64, NULL, ATU.NAME), NULL, A.ATTR_TOID, DECODE(BITAND(
T.PROPERTIES, 65536), 65536, 'NO', 'YES'), SU.NAME, SO.NAME FROM
 SYS.ATTRIBUTE$ A, SYS.TYPE$ T, SYS.TYPE$ AT, SYS. "_CURRENT_EDI
TION_OBJ" ATO, SYS.USER$ ATU, SYS. "_CURRENT_EDITION_OBJ" SO, SY
S.USER$ SU WHERE T.TVOID = :B1 AND A.ATTR_TOID = ATO.OID$ AND AT
O.OWNER# = ATU.USER# AND A.TOID = T.TVOID AND T.PACKAGE_OBJ# IS
NULL AND AT.TVOID = A.ATTR_TOID AND AT.SUPERTOID = SO.OID$ (+) A
ND SO.OWNER# = SU.USER# (+) ORDER BY ATTRIBUTE#

SELECT /*+ NOPARALLEL */ 1, U.NAME, O.NAME, O.OID$ FROM SYS. "_C
URRENT_EDITION_OBJ" O, SYS.USER$ U, SYS.TYPE$ T WHERE T.SUPERTOI
D = :B1 AND T.TVOID = O.OID$ AND O.SUBNAME IS NULL AND O.OWNER#
= U.USER#

Code stack involved

  at app//oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1081)
  at app//oracle.jdbc.oracore.OracleTypeADT.initMetadata12(OracleTypeADT.java:548)
  at app//oracle.jdbc.oracore.OracleTypeADT.initMetadata(OracleTypeADT.java:480)
  at app//oracle.jdbc.oracore.OracleTypeADT.init(OracleTypeADT.java:446)
  at app//oracle.sql.ArrayDescriptor.initPickler(ArrayDescriptor.java:1606)
  at app//oracle.sql.ArrayDescriptor.<init>(ArrayDescriptor.java:274)
  at app//oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:132)
  at app//oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:84)
  at app//wt.pds.oracle81.OracleStatementParameterFactory.initializeArray(OracleStatementParameterFactory.java:242)
  at app//wt.pds.oracle81.OracleStatementParameterFactory.initializeArray(OracleStatementParameterFactory.java:143)
  at app//wt.pds.StatementParameterFactory.initializeTypes(StatementParameterFactory.java:246)
  at app//wt.pds.oracle81.OracleStatementParameterFactory.initializeTypes(OracleStatementParameterFactory.java:89)
  at app//wt.pds.SQLDatabasePds.initializeConnection(SQLDatabasePds.java:2191)
  at app//wt.pds.OraclePds.initializeConnection(OraclePds.java:286)
  at app//wt.pom.WTConnection.connect(WTConnection.java:387)
  at app//wt.pom.WTConnection.<init>(WTConnection.java:319)
  at app//wt.pom.PersistentObjectManager.connect(PersistentObjectManager.java:296)
  at app//wt.pom.POMHandler$LazyConnectionSource.getConnection(POMHandler.java:815)
  at app//wt.pom.POMHandler.getConnection(POMHandler.java:234)
  at app//wt.method.MethodContext.getConnection(MethodContext.java:2436)
  at app//com.ptc.core.lwc.server.cache.TypeDefinitionCacheLock.acquireReadLock(TypeDefinitionCacheLock.java:61)
  at app//com.ptc.core.lwc.server.cache.TypeDefinitionManager.ensureTypeDefInitialization(TypeDefinitionManager.java:239)
  • Other stack that can leads to MethodServer shutdown:
ERROR [com.ptc.core.components.dataUtilities.worker-2056] wt.pds.exception USERNAME - Reconnect failed wt.pom.ConnectionException: A SQL error has occurred. Database system message follows:
Nested exception is: wt.pom.ConnectionLostException: A database connection failure has occurred and the operation has been aborted.
Nested exception is: java.sql.SQLRecoverableException: Closed Connection
                at oracle.jdbc.driver.PhysicalConnection.needLine(PhysicalConnection.java:3525)
                at oracle.jdbc.driver.OracleStatement.closeOrCache(OracleStatement.java:1478)
                at oracle.jdbc.driver.OracleStatement.close(OracleStatement.java:1461)
                at oracle.jdbc.driver.OracleStatementWrapper.close(OracleStatementWrapper.java:122)
                at oracle.jdbc.driver.OraclePreparedStatementWrapper.close(OraclePreparedStatementWrapper.java:98)
                at oracle.jdbc.driver.OracleCallableStatementWrapper.close(OracleCallableStatementWrapper.java:1124)
                at oracle.jdbc.oracore.OracleTypeADT.initMetadata12(OracleTypeADT.java:710)
                at oracle.jdbc.oracore.OracleTypeADT.initMetadata(OracleTypeADT.java:480)
                at oracle.jdbc.oracore.OracleTypeADT.init(OracleTypeADT.java:446)
                at oracle.sql.TypeDescriptor.getTypeDescriptor(TypeDescriptor.java:942)
                at oracle.sql.StructDescriptor.isValidObject(StructDescriptor.java:99)
                                  at oracle.sql.StructDescriptor.createDescriptor(StructDescriptor.java:122)
                                  at oracle.sql.StructDescriptor.createDescriptor(StructDescriptor.java:82)

                
ERROR [com.ptc.core.components.dataUtilities.worker-2056] wt.pds.exception USERNAME - Shutting down wt.pom.ConnectionLostException: A SQL error has occurred. Database system message follows:
Nested exception is: java.sql.SQLRecoverableException: IO Error: Socket read interrupted
                at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:993)
                at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1012)

FATAL [com.ptc.core.components.dataUtilities.worker-2056] wt.method.server.shutdown USERNAME - Stopping services...



 

This is a printer-friendly version of Article 374124 and may be out of date. For the latest version click CS374124