डेटाबेस के भीतर नवीनतम एसक्यूएल स्टेटमेंट कैसे खोजें?


25

मुझे प्रदर्शन डेटाबेस के साथ-साथ अपने डेटाबेस में नवीनतम निष्पादित विवरण प्राप्त करना पसंद है।

जैसे, मुझे यह जानना पसंद है कि कौन से एसक्यूएल कथन सबसे अधिक सीपीयू / डिस्क गहन थे।


जवाबों:


17

यहाँ काम करने के लिए SQL है। परीक्षण के लिए खोलें।

चरण 1: इंस्टॉल करने वाली आईडी और उपयोगकर्ता आईडी निर्धारित करें।

SELECT inst_id,sid FROM gv$session WHERE username='<ENTER-USERNAME>';

चरण 2:

SELECT 
      s.sid
     ,s.CLIENT_INFO
     ,s.MACHINE
     ,s.PROGRAM
     ,s.TYPE
     ,s.logon_time
     ,s.osuser
     ,sq.sorts
     ,sq.DISK_READS
     ,sq.BUFFER_GETS
     ,sq.ROWS_PROCESSED
     ,sq.SQLTYPE
     ,sq.SQL_TEXT
 FROM gv$session s    
    , gv$sql sq
WHERE s.SQL_HASH_VALUE = sq.HASH_VALUE
  AND s.inst_id = :inst_id -- replace with instID from above
  AND s.sid = :sid -- replace with ID from above
  AND sq.inst_id = s.inst_id

वहाँ कई Ids और उदाहरण Ids वापस आ सकते हैं। तो यह एक उपयोगकर्ता की पसंद पर निर्भर करता है कि वह वेब इंटरफेस आदि में इस डेटा का उपयोग कैसे करे।


बस छोटे नोट: Oracle समर्थन करता है (किस संस्करण से कोई विचार नहीं है) in... AND (s.inst_id, s.sid) in ( (:id1, :sid1), (:id2, :sid2), ... )
टुपल्स के

1
'inst_id' उदाहरण के लिए Id है, itdoes का अर्थ संस्थापन आईडी नहीं है।
चमत्कार 173

13

Oracles एंटरप्राइज मॉनिटर कंसोल, संपूर्ण जानकारी दिखाता है जिसके बारे में SQL क्वेरी अधिकतम CPU, अड़चनें ले रही हैं, डेटाबेस में शीर्ष गतिविधि, SQLs एट अल ब्लॉक कर रही है।

एक ऐतिहासिक दृष्टिकोण के लिए, आप अपने से संबंधित बिंदु क्षेत्रों को पिन करने के लिए Oracle की AWR रिपोर्ट का उपयोग कर सकते हैं ।

वैकल्पिक शब्द

यहाँ छवि विवरण दर्ज करें


1
जिज्ञासा से बाहर - AWR एक टूल है जो सभी Oracle लाइसेंस के लिए उपलब्ध है और क्या मैं इसे केवल कमांड लाइन के माध्यम से उपयोग कर सकता हूं?
सेबेस्टियन रोथ

2
क्षमा करें, मुझे इसका उल्लेख करना चाहिए था - जो मुझे पता है, उससे AWR को एक अलग लाइसेंसिंग की आवश्यकता है - ओरेकल ट्यूनिंग एंड डायग्नोस्टिक पैक । मैं एंटरप्राइज़ प्रबंधक कंसोल से AWR का उपयोग करना पसंद करता हूं - मुझे एंटरप्राइज़ प्रबंधक कंसोल का उपयोग करने का विशेषाधिकार (!) प्राप्त हुआ है। मैंने यह भी पाया कि आप SQL डेवलपर पर नज़र रखने के लिए SQL डेवलपर का उपयोग कर सकते हैं, लेकिन इसके लिए उपरोक्त लाइसेंस की आवश्यकता है
Sathyajith Bhat

1
ओरेकल एंटरप्राइज मैनेजर (ओईएम) बहुत अच्छा है। हम ऑटो-रिफ्रेश किए गए ग्राफ़ के साथ वास्तविक समय में अपने डेटाबेस स्वास्थ्य की निगरानी कर सकते हैं। हम अपने प्राथमिक डेटाबेस 24x7 के लिए OEM दिखाते हुए एक दीवार पर लटका हुआ एक बड़ा मॉनिटर प्राप्त कर चुके हैं और समस्याओं को पहचानने में बेहद फायदेमंद हैं।
15

4

आप उपयोग भी कर सकते हैं V$SQL, कई दिलचस्प कॉलम RUNTIME_MEM, EXECUTIONS, DISK_READS, SORTS, ELAPSED_TIME, SQL_FULLTEXTआदि हैं ।

यह आपको डिस्क रीड द्वारा शीर्ष 10 कथन देगा (ध्यान दें - यह सभी निष्पादन के लिए संचयी है):

select sql_id,child_number from
(
select sql_id,child_number from v$sql
order by disk_reads desc
)
where rownum<11

यदि कथन अभी भी है V$SQL_PLANतो आप क्वेरी के लिए वास्तविक व्याख्या योजना प्राप्त कर सकते हैं:

select * from table(dbms_xplan.display_cursor('sql_id',child_number));

मैं भी V$SQL_PLANइसका उपयोग करना पसंद करता हूं क्योंकि इसमें अच्छी जानकारी है। यदि आपका statistics_level=ALLउपयोग कर सकते हैं V$SQL_PLAN_STATISTICS


2

हाल ही में SQL के लिए:

select * from v$sql

इतिहास के लिए:

select * from dba_hist_sqltext
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.