मैंने इस SQL कथन को प्रारंभ करने के लिए एक उपयोगी स्थान के रूप में पाया (क्षमा करें, मैं इसका श्रेय मूल लेखक को नहीं दे सकता; मैंने इसे इंटरनेट पर कहीं पाया है):
SELECT * FROM
(SELECT
sql_fulltext,
sql_id,
elapsed_time,
child_number,
disk_reads,
executions,
first_load_time,
last_load_time
FROM v$sql
ORDER BY elapsed_time DESC)
WHERE ROWNUM < 10
/
यह शीर्ष SQL कथनों को ढूँढता है जो वर्तमान में बीते हुए समय के क्रम में SQL कैश में संग्रहीत हैं। समय के साथ स्टेटमेंट कैश से गायब हो जाएंगे, इसलिए जब आप दोपहर में काम पर जाते हैं तो कल रात के बैच जॉब का निदान करने का प्रयास करना अच्छा नहीं हो सकता है।
आप डिस्क_रीड्स और निष्पादन द्वारा ऑर्डर करने का भी प्रयास कर सकते हैं। निष्पादन उपयोगी है क्योंकि कुछ खराब अनुप्रयोग एक ही SQL कथन को कई बार भेजते हैं। यह SQL मानता है कि आप बाइंड वैरिएबल का सही तरीके से उपयोग करते हैं।
फिर, आप sql_id
ले सकते हैं और child_number
एक बयान का और उन्हें इस बच्चे को खिलाओ:-
SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('&sql_id', &child));
यह SQL कैश से वास्तविक योजना और SQL का पूरा पाठ दिखाता है।