में वर्तमान खुले कर्सर कैसे खोजें नो नंबर खोजने के लिए क्वेरी क्या है। ओरेकल इंस्टेंस में वर्तमान खुले कर्सर का?ओरेकल
इसके अलावा, इस डेटा की सटीकता/अद्यतन आवृत्ति क्या है?
मैं Oracle 10gR2
में वर्तमान खुले कर्सर कैसे खोजें नो नंबर खोजने के लिए क्वेरी क्या है। ओरेकल इंस्टेंस में वर्तमान खुले कर्सर का?ओरेकल
इसके अलावा, इस डेटा की सटीकता/अद्यतन आवृत्ति क्या है?
मैं Oracle 10gR2
कुल कर्सर खुला उपयोग कर रहा हूँ, सत्र से:
select a.value, s.username, s.sid, s.serial#
from v$sesstat a, v$statname b, v$session s
where a.statistic# = b.statistic# and s.sid=a.sid
and b.name = 'opened cursors current';
स्रोत: http://www.orafaq.com/node/758
जहाँ तक मुझे वी $ विचारों पर प्रश्नों पता है छद्म तालिकाओं के आधार पर कर रहे हैं ("x $" टेबल) जो सीधे एसजीए के प्रासंगिक हिस्सों को इंगित करता है, ताकि आप उससे अधिक सटीक न हो; हालांकि इसका यह भी अर्थ है कि यह समय-समय पर (यानी गंदा पढ़ा जाता है)।
यहां खुले कर्सर को ढूंढने का तरीका बताया गया है जिन्हें पार्स किया गया है। आपको v $ open_cursor और v $ सत्र तक पहुंचने वाले उपयोगकर्ता के रूप में लॉग इन करने की आवश्यकता है।
COLUMN USER_NAME FORMAT A15
SELECT s.machine, oc.user_name, oc.sql_text, count(1)
FROM v$open_cursor oc, v$session s
WHERE oc.sid = s.sid
GROUP BY user_name, sql_text, machine
HAVING COUNT(1) > 2
ORDER BY count(1) DESC
;
यदि आपको SQL टेक्स्ट का हिस्सा देता है तो यह लीकी अनुप्रयोगों की पहचान के लिए उपयोगी हो सकता है। अगर एक कर्सर को पार्स नहीं किया गया है, तो यह यहां दिखाई नहीं देता है। ध्यान दें कि ओरलस कभी-कभी चीजों को आपके काम से अधिक लंबे समय तक रखेगा।
असल में, यह एक जटिल स्थिति है। कैश किए गए बयान दिखाने के लिए v $ open_cursor होता है। ओपन कर्सर (यदि आपके पास कर्सर/परिणामसेट रिसाव है तो संसाधन को हथौड़ा लगाया जा सकता है) 'खोले कर्सर चालू' नाम की एक पंक्ति में v $ sessstat में है। –
@ ओली: लेकिन यह आपको लीक करने वाले SQL कथन की पहचान करने में कैसे मदद करता है? –
यह चयन आपको वास्तविक SQL कोड दिखाता है जो कर्सर खोलता है, डीबगिंग के लिए अच्छा है! मुझसे +1 –
select sql_text, count(*) as "OPEN CURSORS", user_name from v$open_cursor
group by sql_text, user_name order by count(*) desc;
मेरे लिए काम करता प्रतीत होता है।
1) अपने आईडी sys में व्यवसाय करने पहुँच 2)
select sum(a.value) total_cur, avg(a.value) avg_cur, max(a.value) max_cur,
s.username, s.machine
from v$sesstat a, v$statname b, v$session s
where a.statistic# = b.statistic# and s.sid=a.sid
and b.name = 'opened cursors current'
group by s.username, s.machine
order by 1 desc;
Oracle SQL और मुसीबत शूटिंग सुझावों के साथ इस समस्या के लिए एक पृष्ठ है होना चाहिए।
"समस्या निवारण ओपन कर्सर मुद्दे" http://docs.oracle.com/cd/E40329_01/admin.1112/e27149/cursor.htm#OMADM5352
मैं कुछ इस तरह का उपयोग करें:
select
user_name,
count(*) as "OPEN CURSORS"
from
v$open_cursor
group by
user_name;
ये 'खोला कर्सर वर्तमान' lazily ओरेकल तालिका सर्वर द्वारा काटा जाता है; तो आपके आवेदन के लिए जो संख्या आप देखते हैं वह बिना किसी गलती के अर्थ के बिना असामान्य रूप से उच्च हो सकती है। देखें http://www.orafaq.com/node/758 –