Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

एक सत्र द्वारा निष्पादित Oracle प्रश्न

अधिक कॉन्फ़िगरेशन (जैसे ऑडिटिंग सक्षम करना) या कुछ समझौता किए बिना आपको संभवतः वह डेटा नहीं मिलेगा जिसकी आप तलाश कर रहे हैं। आप किस व्यावसायिक समस्या को हल करने का प्रयास कर रहे हैं? समस्या के आधार पर, हम डेटाबेस को कॉन्फ़िगर करने के सबसे आसान तरीके की पहचान करने में आपकी मदद कर सकते हैं ताकि आप उस जानकारी को रिकॉर्ड कर सकें जो आप चाहते हैं।

ओरेकल कहीं भी स्टोर करने का प्रयास नहीं करता है कि किसी विशेष उपयोगकर्ता (और विशेष रूप से कितनी बार एक विशेष ऑपरेटिंग सिस्टम उपयोगकर्ता) ने किसी विशेष क्वेरी को निष्पादित किया है। SQL_ID V$SESSION . में केवल SQL_ID को इंगित करता है कि सत्र वर्तमान में क्रियान्वित हो रहा है। यदि, जैसा कि मैं अनुमान लगा रहा हूं, यह एक क्लाइंट-सर्वर एप्लिकेशन है, तो यह काफी संभावना है कि यह 99% समय है क्योंकि अधिकांश समय सत्र किसी भी SQL को निष्पादित नहीं कर रहा है, यह उपयोगकर्ता पर प्रतीक्षा कर रहा है कुछ करने के लिए। PREV_SQL_ID V$SESSION . में पूर्व SQL कथन है जिसे निष्पादित किया गया था-- कि कम से कम आम तौर पर NULL नहीं होगा . लेकिन इसका केवल एक मान होगा, इसमें उस सत्र द्वारा निष्पादित SQL कथनों का इतिहास नहीं होगा।

V$SQL दृश्य SQL साझा पूल में क्या है इसका एक प्रतिनिधित्व है। जब कोई SQL कथन साझा पूल से बाहर हो जाता है, तो वह अब V$SQL . में नहीं रहेगा दृश्य। यह कितनी जल्दी होता है यह कई कारकों पर निर्भर करता है-- कोई व्यक्ति कितनी बार कथन निष्पादित कर रहा है, कितनी बार नए कथनों को पार्स किया जाता है (जो आम तौर पर इस बात पर निर्भर करता है कि आपके एप्लिकेशन बाइंड वैरिएबल का सही तरीके से उपयोग कर रहे हैं), आपका साझा पूल कितना बड़ा है, आदि . आम तौर पर, यह कुछ मिनटों के बीच और डेटाबेस के बंद होने तक कहीं होगा।

यदि आपको AWR तालिकाओं का उपयोग करने के लिए लाइसेंस दिया गया है और आप पूरी तरह से सही उत्तरों के बजाय सन्निकटन में रुचि रखते हैं, तो आप कुछ AWR तालिकाओं को देखकर जानकारी प्राप्त करने में सक्षम हो सकते हैं। उदाहरण के लिए, V$ACTIVE_SESSION_HISTORY SQL कथन को कैप्चर करेगा कि प्रत्येक सत्र सक्रिय रूप से प्रत्येक सेकंड को क्रियान्वित कर रहा था। चूंकि यह क्लाइंट-सर्वर एप्लिकेशन है, हालांकि, इसका मतलब है कि अधिकांश समय सत्र निष्क्रिय रहने वाला है, इसलिए कुछ भी कैप्चर नहीं किया जाएगा। SQL कथन जो किसी सत्र के लिए कैप्चर किए जाने के लिए होते हैं, हालांकि, आपको विभिन्न SQL कथनों की सापेक्ष आवृत्ति के बारे में कुछ विचार देंगे। बेशक, लंबे समय तक चलने वाले SQL कथनों को भी कैप्चर किए जाने की अधिक संभावना है क्योंकि वे किसी दिए गए पल में सक्रिय होने की अधिक संभावना रखते हैं। यदि क्वेरी A और B दोनों बिल्कुल समान समय में निष्पादित होते हैं और एक सत्र को अंतिम घंटे में A को 5 बार और B को 10 बार निष्पादित करते हुए कैप्चर किया गया था, तो आप यह निष्कर्ष निकाल सकते हैं कि B को A की तुलना में लगभग दोगुना निष्पादित किया जाता है। और यदि आप जानते हैं एक क्वेरी का औसत निष्पादन समय, क्वेरी को कैप्चर करने की औसत संभावना क्वेरी निष्पादित होने वाले सेकंड की संख्या होने वाली है (एक क्वेरी जो 0.5 सेकंड में निष्पादित होती है, उसके कैप्चर होने की 50% संभावना होती है, एक जो 0.25 में निष्पादित होती है) सेकंड में कैप्चर होने की 25% संभावना होती है) ताकि आप अनुमान लगा सकें कि किसी विशेष सत्र ने किसी विशेष क्वेरी को कितनी बार निष्पादित किया है। यह एक सटीक संख्या से बहुत दूर है, विशेष रूप से कम समय-सीमा में और उन प्रश्नों के लिए जिनका वास्तविक निष्पादन समय अधिक परिवर्तनशील है।

V$ACTIVE_SESSION_HISTORY . में डेटा दृश्य आम तौर पर कुछ घंटों के लिए उपलब्ध होता है। इसके बाद इसे DBA_HIST_ACTIVE_SESS_HISTORY में सैंपल किया जाता है तालिका जो किसी भी अनुमान को बहुत कम सटीक बनाकर परिमाण के क्रम से उपलब्ध डेटा की मात्रा में कटौती करती है। लेकिन वह डेटा आपके AWR प्रतिधारण अंतराल के लिए रखा जाता है (डिफ़ॉल्ट रूप से, यह एक सप्ताह है, हालांकि कई साइटें इसे 30 या 60 दिनों तक बढ़ा देती हैं)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. योजना लागत दर्द बिंदु की व्याख्या करें

  2. कैसे refcursor में एक बूलियन वापस करने के लिए?

  3. DBA_PROCEDURES दृश्य में प्रक्रिया खोजने में असमर्थ

  4. समय क्षेत्र के लिए Oracle दिनांक स्वरूपण मुखौटा क्या है?

  5. Oracle अपवाद भाषा को .Net/C# में कैसे बदलें?