मेरे पास DBMS_STATS के साथ उपयोगकर्ता परिभाषित दिनचर्या के बारे में पिछली पोस्ट थी। कुछ और खुदाई के बाद, मैंने निर्धारित किया कि यह कैसे काम करता है। मेरे पास मेरे डेटाबेस में कुछ डेटा है जो उपयोगकर्ता परिभाषित प्रकार में संग्रहीत है। यदि आपके पास एक उपयोगकर्ता-परिभाषित प्रकार है, तो आप अपने उपयोगकर्ता-परिभाषित आँकड़े संग्रह दिनचर्या को Oracle डेटा कार्ट्रिज इंटरफ़ेस (ODCI) के साथ जोड़ सकते हैं। ODCIStatsCollect रूटीन को स्वचालित रूप से कॉल किया जाता है जब DBMS_STATS को उस तालिका पर लागू किया जाता है जिसमें वह उपयोगकर्ता-परिभाषित प्रकार होता है।
मेरे मामले में, मैंने उच्च CPU उपयोग को एक SQL कथन में ट्रैक किया जो तृतीय पक्ष एप्लिकेशन विक्रेता ने अपने ODCIStatsCollect रूटीन में रखा था। इस बिंदु पर, यह सिर्फ एक क्वेरी ट्यूनिंग समस्या बन जाती है। हम क्वेरी कैसे लिख सकते हैं ताकि यह कम CPU का उपयोग करे? समस्या को देखने के बाद, मुझे लगा कि सबक्वायरी निकालने और परिणामों को वैश्विक अस्थायी तालिका में डालने का सबसे आसान तरीका था। फिर बाकी क्वेरी को सबक्वेरी में शामिल होने के बजाय GTT में शामिल होने दें। ऐसा करने से, CPU उपयोग नाटकीय रूप से कम हो गया था। मैंने एप्लिकेशन विक्रेता को फिक्स भेज दिया है और मैं यह देखने के लिए इंतजार कर रहा हूं कि वे क्या कहते हैं।