ओरेकल सत्र सक्रिय होने के दो सप्ताह बाद भी क्यों जीवित है


16

DB: Oracle 10g

O / S: विंडोज सर्वर 2003 64 बिट्स

मैं वेब अनुप्रयोगों (प्रोग्राम द्वारा फ़िल्टर = w3wp.exe) द्वारा उत्पन्न Oracle सत्रों की क्वेरी सूची

select * from V$session
where UPPER(program) LIKE '%W3%'
order by logon_time

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

लोगोन_टाइम के अनुसार, 31/07/2012 या 01/08/2012 या आज से पहले किसी भी सत्र (21/08/2012) से जीवित सत्र क्यों हैं?

मैंने sqlnet.ora पर कॉन्फ़िगर किया है: SQLNET.EXPIRE_TIME = 20 तो इसका मतलब है कि यदि कनेक्शन अभी भी सक्रिय हैं तो हर 20 मिनट के Oracle की जाँच की जा रही है।

सभी उपयोगकर्ता-स्कीमा में डिफ़ॉल्ट प्रोफ़ाइल है। इसका मतलब होगा कि कोई भी सत्र कभी समाप्त नहीं होगा या मर जाएगा?

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

फिल की टिप्पणी के जवाब में जोड़ा गया:

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

फिल के जवाब की प्रतिक्रिया में जोड़ा गया:

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


v$session.PREV_EXEC_STARTइन सत्रों के लिए क्या है ? मुझे संदेह है कि वे एक कनेक्शन पूल का हिस्सा हैं और इसलिए वे बेकार नहीं हुए हैं क्योंकि उनका अक्सर उपयोग किया जा रहा है।
फिलिप

मेरा ओरेकल 10 जी है, इसलिए वी $ सत्र पर कोई PREV_EXEC_START कॉलम नहीं है। लेकिन मेरे पास फिर से Last_Call_ET कॉलम सहित क्वेरी है (मैंने अपने प्रश्न पर उस चित्र को जोड़ा)।
डेलमन्टे

मैंने अपने डेवलपर्स के साथ बात की, और उन्होंने मुझे बताया कि वे अपने वेब ऐप में ODP.NET का उपयोग कर रहे हैं। इसलिए यह सुनिश्चित है कि उन सत्रों को एक कनेक्शन पूल में उत्पन्न किया गया था। मुझे पूरी तरह से भरोसा नहीं है जब ओरेकल स्थिति दिखाता है, लेकिन इस मामले में ... क्या आपको लगता है कि मैं दो सप्ताह पहले सत्रों को मार सकता हूं?
डेलमन्टे

7
सं INACTIVEकेवल इसका मतलब है कि वहाँ एक एसक्यूएल बयान सही समय आप की जाँच पर निष्पादित किया जा रहा नहीं है v$session। यदि वे एक कनेक्शन पूल का हिस्सा हैं जो वे अपना काम ठीक से कर रहे हैं - कनेक्शन पूलिंग का पूरा बिंदु लॉगऑन / लॉगऑफ़ के बहुत सारे की आवश्यकता को दूर करना है और तेजी से स्टार्टअप के लिए लगातार सत्र रखना है (बहुत बड़ा ओवरहेड लॉग इन फिर से और फिर से बस एक क्वेरी निष्पादित करने के लिए)। मुझे समझ नहीं आता कि आप इस बारे में चिंतित क्यों हैं।
फिलु

@Phil - मैं खुशी से उत्तोलन करूंगा कि एक उत्तर के रूप में!
जस्टिन केव

जवाबों:


22

मुझे संदेह है कि वे एक कनेक्शन पूल का हिस्सा हैं और इसलिए वे बेकार नहीं हुए हैं क्योंकि उनका अक्सर उपयोग किया जा रहा है।

INACTIVEv$sessionकेवल इस अर्थ में कि आपके द्वारा जाँचे जा रहे सटीक समय पर SQL कथन निष्पादित नहीं किया जा रहा है v$session

यदि वे एक कनेक्शन पूल का हिस्सा हैं तो वे लंबे समय तक लॉग इन करके अपना काम ठीक से कर रहे हैं। कनेक्शन पूलिंग का पूरा बिंदु लॉगऑन / लॉगऑफ़ के बहुत सारे की आवश्यकता को दूर करना है और तेज क्वेरी स्टार्टअप के लिए लगातार सत्र रखना है - एक क्वेरी निष्पादित करने के लिए बहुत बड़ा ओवरहेड लॉगिंग है, फिर हर बार डिस्कनेक्ट करना।

प्रत्येक सत्र के लिए अंतिम गतिविधि का समय प्राप्त करने के लिए:

select username, UPPER(program), logon_time, 
       floor(last_call_et / 60) "Minutes since active", status
from v$session
where UPPER(program) LIKE '%W3%'
order by last_call_et;

जब तक आप यह नहीं जानते कि मैं सत्र को मारने की सलाह दूंगा, ऐसा करने से आवेदन पक्ष पर समस्या नहीं आएगी (उदाहरण के लिए मारे गए सत्र का उपयोग करने की कोशिश करना)।

यह ऐसा मामला हो सकता है कि आप गलत तरीके से कॉन्फ़िगर किए गए कनेक्शन पूल को देख रहे हैं, जो ऐप शुरू होते ही सैकड़ों कनेक्शन बनाता है - कनेक्शन पूल जितना बड़ा होना चाहिए उससे अधिक परिमाण का एक आदेश हो सकता है। मेरा सुझाव है कि डेवलपर्स / एप्लिकेशन सपोर्ट स्टाफ तक पहुंचना और कनेक्शन पूल कैसे कॉन्फ़िगर किया गया है, इस पर एक नज़र रखना।

थोड़ा शोध करने के बाद, w3wp.exe IIS एप्लिकेशन पूल प्रक्रिया है - आप कनेक्शन पूलिंग कॉन्फ़िगरेशन के निचले भाग में जाने में मदद करने के लिए लगभग अपने IIS वेबसर्वर व्यवस्थापक से बात करना चाहते हैं।


आपकी व्याख्या के लिए धन्यवाद, लेकिन क्या होगा अगर उन odp.net सत्र मान बढ़ रहे हैं और संख्या में बढ़ रहे हैं? मैं v $ resource_limit (मेरे मूल प्रश्न में जोड़ा गया) को क्वेरी करता हूं और दिखाता है कि प्रक्रियाएं और सत्र मान मूल्य सीमा का 80% तक पहुंच रहे हैं। वे odp.net सत्र मेरे सत्र मूल्यों का उपभोग कर सकते हैं, 701 सीमा मूल्य तक पहुंच सकते हैं और फिर मेरे डेटाबेस कनेक्शन को छोड़ सकते हैं? (मुझे पता है कि मैं उन सीमा मूल्यों को 1000 या 2000 तक बढ़ा सकता हूं, लेकिन यह सवाल का हिस्सा नहीं है)
डेलमन्टे

फिर आपको एप्लिकेशन की समस्या है।
फिलो

क्यों? वेब एप्लिकेशन खुल रहे हैं, बंद कर रहे हैं और odp.net कनेक्शन का निपटान कर रहे हैं ... जैसा कि मैं समझ रहा हूं, उन odp.net सत्र अभी भी जीवित हैं जो भविष्य के कनेक्शन की प्रतीक्षा कर रहे हैं, भले ही वेब अनुप्रयोग उन्हें निपटाने के लिए।
डेलमन्टे

ऐसा लगता है कि यह एक कनेक्शन पूल कॉन्फ़िगरेशन समस्या होगी। क्या आपने समय के साथ v $ सत्र की गणना (*) की है? क्या आपके पास डीबी के लिए एक डायग्नोस्टिक्स पैक लाइसेंस है?
फिलु

3
मुझे लगता है कि आपका मतलब IIS (Microsoft का HTTP / ऐप सर्वर) है, ISS का नहीं (अंतर्राष्ट्रीय स्पेस स्टेशन) :-)
जस्टिन गुफा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.