2013-01-23 12 views
5

मेरे पास एक ऐसा एप्लिकेशन है जो कुछ SQL क्वेरी निष्पादित करता है। मैं वर्तमान में एसक्लप्लस या किसी अन्य ऑरैक क्लाइंट से क्वेरी निष्पादित करने के लिए निष्पादन योजना कैसे प्राप्त कर सकता हूं? मैं ओरेकल सत्र में संशोधन कर सकता हूं जिसका प्रयोग अनुप्रयोग में किया जाता है, यदि यह आवश्यक है।एक क्वेरी के रनटाइम निष्पादन योजना प्राप्त करें

मैं explain plan का उपयोग नहीं करना चाहता हूं और हाथ से उस क्वेरी को निष्पादित करना चाहता हूं, मुझे क्वेरी के लिए उपयोग की जाने वाली वास्तविक निष्पादन योजना प्राप्त करने की आवश्यकता है।

उत्तर

10

आप SGA से ऐतिहासिक प्रश्नों पर सादे समझाने चला सकते हैं - examples

और लिस्टिंग बी

उदाहरण:

SELECT username, prev_sql_id 
FROM v$session 
WHERE username = 'RDEVALL' -- example user 

एसक्यूएल आईडी

RDEVALL a1d4z5ruduzrd 
RDEVALL avmbutuknvb6j 
RDEVALL 75g0tqd9x743y 
RDEVALL 5fnkh6c8mqqt3 
RDEVALL 75g0tqd9x743y 

पिक क्वेरी लौटे आईडी और यहां उपयोग करें:

SELECT * 
    FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('a1d4z5ruduzrd')); -- replace with sql ID as needed 
+0

इसके अलावा, आप अन्य खोज मानदंडों जैसे मशीन नाम, प्रोग्राम नाम इत्यादि पर v $ सत्र पूछ सकते हैं, यदि यह निर्धारित करने में अधिक समझदारी हो कि कौन सी एसक्यूएल स्टेटमेंट का पता लगाना है। सभी प्रासंगिक कॉलम देखने के लिए डीईएससी वी $ सत्र चलाएं। – OldProgrammer

+0

मुझे DBMS_XPLAN.DISPLAY_CURSOR() के साथ कोई समस्या है। मेरे पास दो अलग-अलग सत्रों में एक ही क्वेरी चल रहे दो उपयोगकर्ता हैं। चूंकि क्वेरी वही है, इसलिए दोनों सत्रों में क्वेरी की हैश कुंजी समान है। DBMS_XPLAN.DISPLAY_CURSOR () को कॉल करते समय, कोई सत्र कैसे निर्दिष्ट नहीं करता है? मेरा मानना ​​है कि यह फ़ंक्शन योजनाबद्ध निष्पादन योजना को वापस कर रहा है, न कि किसी विशिष्ट सत्र में चल रही वास्तविक निष्पादन योजना। –

संबंधित मुद्दे