इस पोस्ट में, हम Oracle सत्र के वेटइवेंट इतिहास को पुनः प्राप्त करने के लिए विभिन्न प्रश्नों को देखेंगे।
किसी विशिष्ट सत्र में प्रारंभ से प्रतीक्षा ईवेंट का इतिहास नीचे क्वेरी का उपयोग करके पाया जा सकता है
लाइन 120 ट्रिम्सपूल पर सेट करें
कॉल इवेंट हेड "प्रतीक्षित" प्रारूप a30
कॉल टोटल_वेट्स हेड "टोटल|वेट्स" फॉर्मेट 999,999
col tw_ms हेड "वेटेड|फॉर (एमएस)" फॉर्मेट 999,999.99
कर्नल aw_ms हेड "औसत|प्रतीक्षा (एमएस)" प्रारूप 999,999.99
col mw_ms शीर्ष "अधिकतम|प्रतीक्षा करें (एमएस)" प्रारूप 999,999.99
इवेंट का चयन करें, कुल_प्रतीक्षा करें, समय_प्रतीक्षा करें10 tw_ms,
औसत_प्रतीक्षा 10 aw_ms, max_wait*10 mw_ms
v$session_event से
जहां sid =&1
/
मान लें कि हम केवल उस अवधि में प्रतीक्षा ईवेंट प्राप्त करने के लिए विशेष अवधि में सत्र का प्रतीक्षा ईवेंट इतिहास देखना चाहते हैं
फिर हम डेटा निकालने के लिए नीचे दी गई ASH क्वेरी का उपयोग कर सकते हैं
SQL> सेलेक्ट इवेंट, गिनती ()
dba_hist_active_sess_history a से
जहां a.sample_time बीच से तारीख तक('12-अक्टूबर-2016 11:49:00′,'DD-MON-YYYY HH24:MI:SS') और
to_date('12-OCT-2016 15:04:00′,'DD-MON-YYYY HH24:MI:SS') और session_id=1853 और SESSION_SERIAL#=19 ग्रुप बाय इवेंट;
ईवेंट COUNT( )
लॉग फ़ाइल सिंक 88
SQL> मॉड्यूल चुनें, गिनती ()
2 dba_hist_active_sess_history a
3 से जहां a.sample_time के बीच to_date('12-OCT-2016 11:49:00′,'DD-MON-YYYY HH24:MI:SS') और
4 to_date('12-OCT-2016 15:04:00′,'DD-MON-YYYY HH24:MI:SS') और session_id=1853 and SESSION_SERIAL#=19 और ईवेंट ='लॉग फ़ाइल सिंक' समूह द्वारा मॉड्यूल;
मॉड्यूल COUNT( )
e:FND:cp:FNDICM 88
मान लीजिए कि हम पिछले एक घंटे की प्रतीक्षा घटना के इतिहास को जानना चाहते हैं, तो नीचे दी गई क्वेरी का उपयोग किया जा सकता है
कॉलम sample_time प्रारूप a30
v$active_session_history
से sample_time, session_state, ईवेंट, sql_id
चुनें
जहां session_id =&1 और sample_time> SYSDATE - 30/(24*60)
इसके अनुसार ऑर्डर करें 1;
तकनीक के लिए महत्वपूर्ण उपयोग मामला।
मान लीजिए कि हम जानना चाहते हैं कि एक निश्चित अवधि के दौरान किस विशेष सत्र का इंतजार था और क्या इसे रोक रहा था
प्रतीक्षा घटना और अन्य महत्वपूर्ण चीजें प्राप्त करने के लिए हम नीचे दी गई क्वेरी का उपयोग कर सकते हैं
कॉल इवेंट फ़ॉर्मैट a30
कॉल सैंपल_टाइम फ़ॉर्मैट a25
सेशन_आईडी, सैंपल_टाइम, सेशन_स्टेट, इवेंट, वेटिंग_टाइम, टाइम_वेट, sql_id, sql_child_number CH#
v$active_session_history से
जहां session_id =19 चुनें
और sample_time बीच
to_date('9-DEC-16 01.25.00 PM','dd-MON-yy hh:mi:ss PM')
और
to_date( '9-DEC-16 02.25.00 PM','dd-MON-yy hh:mi:ss PM')
नमूना_समय के अनुसार ऑर्डर करें;
अब अगर घटना enq:TX - पंक्ति लॉक विवाद है, तो हम जानते हैं कि कुछ सत्र इसे अवरुद्ध कर देंगे।
सैंपल_टाइम, सेशन_स्टेट, ब्लॉकिंग_सेशन, करेंट_ओबीजे#, करेंट_फाइल#, करेंट_ब्लॉक#, करंट_रो#
v$active_session_history
से चुनें जहां सैंपल_टाइम
टू_डेट ('9-DEC-16 01.25.00 PM') के बीच हो ,'dd-MON-yy hh:mi:ss PM')
और
to_date('9-DEC-16 02.25.00 PM','dd-MON-yy hh:mi:ss PM' ')
और session_id =19
और घटना ='enq:TX - पंक्ति लॉक विवाद'
नमूना_समय के अनुसार आदेश;
Blocking_session उस सत्र आईडी को दिखाएगा जिसे सत्र अवरुद्ध किया गया था। हम अवरुद्ध सत्र के लिए ऊपर प्राप्त sql_id का उपयोग करके भी sql स्टेटमेंट निकाल सकते हैं।
इसी तरह के प्रश्नों का उपयोग अवरुद्ध सत्र के लिए जानकारी की पहचान करने और फिर उपयुक्त सुधारात्मक कार्रवाई करने के लिए किया जा सकता है
महत्वपूर्ण जानकारी
आपने देखा होगा कि हमने इन प्रश्नों के लिए अक्सर सक्रिय सत्र इतिहास और सक्रिय सत्र इतिहास संग्रह का उपयोग किया है
सक्रिय सत्र इतिहास क्या है
सक्रिय सत्र इतिहास सक्रिय सत्रों की पहचान करने के लिए डेटाबेस का सर्वेक्षण करता है और उनमें से प्रत्येक के बारे में प्रासंगिक जानकारी को डंप करता है - जैसे कि उपयोगकर्ता आईडी, स्थिति, जिस मशीन से यह जुड़ा हुआ है, और जिस SQL को यह निष्पादित कर रहा है - सिस्टम में एक विशेष क्षेत्र में वैश्विक डेटाबेस इंस्टेंस का क्षेत्र (SGA) जिसे ASH बफर कहा जाता है
सक्रिय सत्र इतिहास संग्रह
सक्रिय सत्र इतिहास हर सेकंड डेटाबेस इंस्टेंस से सक्रिय सत्रों की जानकारी एकत्र करता है। डेटाबेस गतिविधि के आधार पर, इससे ASH बफर के अंदर बहुत सारा डेटा एकत्र हो जाएगा, लेकिन क्योंकि ASH बफर एक मेमोरी-रेजिडेंट संरचना है, इसमें केवल एक सीमित मात्रा में स्थान होता है। इसके अलावा, जब इंस्टेंस कम हो जाता है, तो इंस्टेंस की मेमोरी इसके साथ गायब हो जाती है। इसलिए, Oracle डेटाबेस ASH बफर से डेटा को लगातार बनाने के लिए डेटाबेस तालिका में संग्रहीत करता है। यह संग्रहीत तालिका डेटा DBA_HIST_ACTIVE_SESS_HISTORY नामक दृश्य में दिखाई देता है
संबंधित लेख
Oracle ASH (सक्रिय सत्र इतिहास) उपयोगी प्रश्न
कैसे पता करें कि कौन सा सिड फुल टेबल स्कैन कर रहा है
Oracle डेटाबेस में सत्र विवरण कैसे प्राप्त करें
डीबी समय और औसत सक्रिय सत्र क्या है, ओरेकल में सक्रिय सत्र
बहुत सारे रीडो उत्पन्न करने वाले सत्र को कैसे खोजें