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