Article - CS265436

Indexes needed on ObjectHistory and LifeCycleHistory tables in Windchill PDMLink

Modified: 04-Aug-2025   


Applies To

  • Windchill PDMLink 11.0 to 12.0

Description

  • Indexes needed on ObjectHistory and LifeCycleHistory tables
  • Very Slow Performance in loading Structure of any non-latest iterations of WTParts 
  • Poorly performing SQLs identified in Oracle diagnostics report:
  1. SELECT A0.idA3A2ownership,A0.idA3view,A0.idA3domainRef,A0.entrySetadHocAcl,A0.versionLevelA2versionInfo,A0.branchIditerationInfo,A0.securityLabels,A0.idA3containerReference,A0.classnamekeydomainRef,A0.idA3masterReference,A0.idA2A2,A0.statestate,A0.branchIdA2typeDefinitionRefe,A0.typeadministrativeLock,A0.classnamekeycontainerReferen,A0.statecheckoutInfo,A0.versionIdA2versionInfo,A0.blob$entrySetadHocAcl,A0.classnamekeyA2ownership,A0.classnameA2A2,'wt.part.WTPart' classnameA2A2,A0.idA2A2 
    FROM WTPart A0 
      WHERE ((A0.idA3masterReference IN (SELECT /*+ CARDINALITY(wtot 500) */ * FROM TABLE(cast(:1  as PDMLINK2.TABLE_OF_NUMBER)) wtot   WHERE (ROWNUM > 0)     AND (column_value IS NOT NULL))) 
        AND (A0.classnamekeycontainerReferen <> :2 ) 
        AND (A0.branchIditerationInfo IN (
    SELECT B0.branchIditerationInfo 
    FROM WTPart B0,ObjectHistory B1,LifeCycleHistory B2 
      WHERE ((B2.idA2A2 = B1.idA3B5) 
        AND (B0.idA2A2 = B1.idA3A5) 
        AND (B2.createStampA2 < TO_DATE(:3 ,:4 )) 
        AND (B2.action = :5 ) 
        AND (B2.state = :6 )))) 
        AND (A0.latestiterationInfo = :7 ) 
        AND ((A0.statecheckoutInfo <> :8 ) 
        AND (A0.idA3view = :9 ) OR (A0.viewIsNull IS NULL )) 
        AND (A0.variation1 IS NULL ) 
        AND (A0.variation2 IS NULL )) 
        AND (A0.markForDeleteA2 = 0) UNION ALL 
    SELECT A0.idA3A2ownership,A0.idA3view,A0.idA3domainRef,A0.entrySetadHocAcl,A0.versionLevelA2versionInfo,A0.branchIditerationInfo,A0.securityLabels,A0.idA3containerReference,A0.classnamekeydomainRef,A0.idA3masterReference,A0.idA2A2,A0.statestate,A0.branchIdA2typeDefinitionRefe,A0.typeadministrativeLock,A0.classnamekeycontainerReferen,A0.statecheckoutInfo,A0.versionIdA2versionInfo,A0.blob$entrySetadHocAcl,A0.classnamekeyA2ownership,A0.classnameA2A2,'com.ptc.windchill.mpml.resource.MPMTooling' classnameA2A2,A0.idA2A2 
    FROM MPMTooling A0 
      WHERE ((A0.idA3masterReference IN (SELECT /*+ CARDINALITY(wtot 500) */ * FROM TABLE(cast(:10  as PDMLINK2.TABLE_OF_NUMBER)) wtot   WHERE (ROWNUM > 0) 
        AND (column_value IS NOT NULL))) 
        AND (A0.classnamekeycontainerReferen <> :11 ) 
        AND (A0.branchIditerationInfo IN (
    SELECT B0.branchIditerationInfo 
    FROM WTPart B0,ObjectHistory B1,LifeCycleHistory B2 
      WHERE ((B2.idA2A2 = B1.idA3B5) 
        AND (B0.idA2A2 = B1.idA3A5) 
        AND (B2.createStampA2 < TO_DATE(:12 ,:13 )) 
        AND (B2.action = :14 ) 
        AND (B2.state = :15 )))) 
        AND (A0.latestiterationInfo = :16 ) 
        AND ((A0.statecheckoutInfo <> :17 ) 
        AND (A0.idA3view = :18 ) OR (A0.viewIsNull IS NULL )) 
        AND (A0.variation1 IS NULL ) 
        AND (A0.variation2 IS NULL )) 
        AND (A0.markForDeleteA2 = 0) UNION ALL 
    SELECT A0.idA3A2ownership,A0.idA3view,A0.idA3domainRef,A0.entrySetadHocAcl,A0.versionLevelA2versionInfo,A0.branchIditerationInfo,A0.securityLabels,A0.idA3containerReference,A0.classnamekeydomainRef,A0.idA3masterReference,A0.idA2A2,A0.statestate,A0.branchIdA2typeDefinitionRefe,A0.typeadministrativeLock,A0.classnamekeycontainerReferen,A0.statecheckoutInfo,A0.versionIdA2versionInfo,A0.blob$entrySetadHocAcl,A0.classnamekeyA2ownership,A0.classnameA2A2,'com.ptc.windchill.mpml.resource.MPMWorkCenter' classnameA2A2,A0.idA2A2 
    FROM MPMWorkCenter A0 
      WHERE ((A0.idA3masterReference IN (SELECT /*+ CARDINALITY(wtot 500) */ * FROM TABLE(cast(:19  as PDMLINK2.TABLE_OF_NUMBER)) wtot   WHERE (ROWNUM > 0)     AND (column_value IS NOT NULL))) 
        AND (A0.classnamekeycontainerReferen <> :20 ) 
        AND (A0.branchIditerationInfo IN (
    SELECT B0.branchIditerationInfo 
    FROM WTPart B0,ObjectHistory B1,LifeCycleHistory B2 
      WHERE ((B2.idA2A2 = B1.idA3B5) 
        AND (B0.idA2A2 = B1.idA3A5) 
        AND (B2.createStampA2 < TO_DATE(:21 ,:22 )) 
        AND (B2.action = :23 ) 
        AND (B2.state = :24 )))) 
        AND (A0.latestiterationInfo = :25 ) 
        AND ((A0.statecheckoutInfo <> :26 ) 
        AND (A0.idA3view = :27 ) OR (A0.viewIsNull IS NULL )) 
        AND (A0.variation1 IS NULL ) 
        AND (A0.variation2 IS NULL )) 
        AND (A0.markForDeleteA2 = 0) UNION ALL 
    SELECT A0.idA3A2ownership,A0.idA3view,A0.idA3domainRef,A0.entrySetadHocAcl,A0.versionLevelA2versionInfo,A0.branchIditerationInfo,A0.securityLabels,A0.idA3containerReference,A0.classnamekeydomainRef,A0.idA3masterReference,A0.idA2A2,A0.statestate,A0.branchIdA2typeDefinitionRefe,A0.typeadministrativeLock,A0.classnamekeycontainerReferen,A0.statecheckoutInfo,A0.versionIdA2versionInfo,A0.blob$entrySetadHocAcl,A0.classnamekeyA2ownership,A0.classnameA2A2,'com.ptc.windchill.mpml.resource.MPMPlant' classnameA2A2,A0.idA2A2 
    FROM MPMPlant A0 
      WHERE ((A0.idA3masterReference IN (SELECT /*+ CARDINALITY(wtot 500) */ * FROM TABLE(cast(:28  as PDMLINK2.TABLE_OF_NUMBER)) wtot   WHERE (ROWNUM > 0)     AND (column_value IS NOT NULL))) 
        AND (A0.classnamekeycontainerReferen <> :29 ) 
        AND (A0.branchIditerationInfo IN (
    SELECT B0.branchIditerationInfo 
    FROM WTPart B0,ObjectHistory B1,LifeCycleHistory B2 
      WHERE ((B2.idA2A2 = B1.idA3B5) 
        AND (B0.idA2A2 = B1.idA3A5) 
        AND (B2.createStampA2 < TO_DATE(:30 ,:31 )) 
        AND (B2.action = :32 ) 
        AND (B2.state = :33 )))) 
        AND (A0.latestiterationInfo = :34 ) 
        AND ((A0.statecheckoutInfo <> :35 ) 
        AND (A0.idA3view = :36 ) OR (A0.viewIsNull IS NULL )) 
        AND (A0.variation1 IS NULL ) 
        AND (A0.variation2 IS NULL )) 
        AND (A0.markForDeleteA2 = 0)

    2.  
    SELECT A0.blob$entrySetadHocAcl,A0.classnameA2A2,A0.branchIdA2typeDefinitionRefe, A0.idA3A2ownership,A0.idA2A2,A0.typeadministrativeLock,A0.classnamekeydomainRef,
    A0.securityLabels,A0.entrySetadHocAcl,A0.statestate,A0.idA3domainRef,A0.classnamekeyA2ownership,A0.classnameA2A2,A0.idA2A2 FROM WTPart A0,LifeCycleHistory A1,Ob
    jectHistory A2 WHERE ((A0.idA3masterReference IN (:1 )) AND (A0.classnamekeycontainerReferen <> :31 ) AND (((A0.statestate = :32 ) AND (A1.idA2A2 = A2.idA3B5) AND (A0.idA2A2 = A2.idA3
    A5) AND (A1.action IN (:33 ,:34 ,:35 ,:36 ,:37 )) AND (A1.state = :38 ) AND (A0.modifyStampA2 <= TO_DATE(:39 ,:40 ))) OR ((A0.statestate = :41 ) AND (A1.idA2A2 
    = A2.idA3B5) AND (A0.idA2A2 = A2.idA3A5) AND (A1.action IN (:42 ,:43 ,:44 ,:45 ,:46 )) AND (A1.state = :47 ) AND (A0.modifyStampA2 <= TO_DATE(:48 ,:49 ))))) AND
     ((A0.markForDeleteA2 = 0) AND (A1.markForDeleteA2 = 0) AND (A2.markForDeleteA2= 0)) UNION ALL SELECT A0.blob$entrySetadHocAcl,A0.classnameA2A2,A0.branchIdA2ty
    peDefinitionRefe,A0.idA3A2ownership,A0.idA2A2,A0.typeadministrativeLock,A0.classnamekeydomainRef,A0.securityLabels,A0.entrySetadHocAcl,A0.statestate,A0.idA3doma
    inRef,A0.classnamekeyA2ownership,A0.classnameA2A2,A0.idA2A2 FROM ManufacturerPart A0,LifeCycleHistory A1,ObjectHistory A2 WHERE ((A0.idA3masterReference IN (:50
    )) AND (A0.classnamekeycontainerReferen <> :80 ) AND (((A0.statestate = :81 ) AND (A1.idA2A2 = A2.idA3B5) AND (A0.idA2A2 = A2.idA3A5) AND (A1.action IN (:82 ,:83 ,:84 ,:85 ,:
    86 )) AND (A1.state = :87 ) AND (A0.modifyStampA2 <= TO_DATE(:88 ,:89 ))) OR ((A0.statestate = :90 ) AND (A1.idA2A2 = A2.idA3B5) AND (A0.idA2A2 = A2.idA3A5) AND
     (A1.action IN (:91 ,:92 ,:93 ,:94 ,:95 )) AND (A1.state = :96 ) AND (A0.modifyStampA2 <= TO_DATE(:97 ,:98 ))))) AND ((A0.markForDeleteA2 = 0) AND (A1.markForDe
    leteA2 = 0) AND (A2.markForDeleteA2 = 0))



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