2008-10-14 8 views

उत्तर

73

मुझे लगता है तुम सिर्फ वी $ सत्र से कुछ ही कॉलम और वी $ एसक्यूएल से SQL विवरण हड़पने के लिए चाहते हैं। मान लें कि आप पृष्ठभूमि प्रक्रियाओं ओरेकल ही चल रहा है

SELECT sess.process, sess.status, sess.username, sess.schemaname, sql.sql_text 
    FROM v$session sess, 
     v$sql  sql 
WHERE sql.sql_id(+) = sess.sql_id 
    AND sess.type  = 'USER' 

बाहरी में शामिल होने बाहर करना चाहते हैं, उन सत्रों है कि वर्तमान में सक्रिय नहीं हैं संभाल करने के लिए यह सोचते हैं कि आप उन चाहते हैं। आप वी $ एसक्यूएल से sql_fulltext कॉलम भी प्राप्त कर सकते हैं जिसमें पहले 1000 वर्णों के बजाय पूर्ण SQL कथन होगा, लेकिन यह एक सीएलओबी है और इससे निपटने के लिए थोड़ा और जटिल हो सकता है।

असल में, आप शायद वी $ सत्र में उपलब्ध सभी चीज़ों को देखना चाहते हैं क्योंकि यह संभव है कि आप SP_WHO प्रदान करने से अधिक जानकारी प्राप्त कर सकें।

+9

आप जल्दी से एक लंबे समय के लिए चल रहे प्रश्नों को देखने के लिए की जरूरत है, तो आप 'sql.elapsed_time/1000000'' SELECT' में जोड़ सकते हैं, के साथ साथ बाधा 'कहां ... और sql.elapsed_time नहीं है NULL' , और आखिर में 'ORDER द्वारा sql.elapsed_time DESC'। –

+1

* वी $ एसक्यूएल ईआरआरओआर लाइन 1: ओआरए -00 9 42: तालिका या दृश्य मौजूद नहीं है –

+0

@ ओलेटेंज तब आपके डीबीए ने आपको उस दृश्य पर विशेषाधिकार नहीं दिए हैं। आपको उसे ऐसा करने के लिए कहने की आवश्यकता होगी। –

5

SP_who को देखने के बाद, ओरेकल में प्रति क्षमता नहीं है। ओरेकल में कम से कम 8 प्रक्रियाएं चल रही हैं जो डीबी चलाती हैं। आरएमओएन आदि की तरह

आप डीबी से पूछ सकते हैं कि क्वेरी सिर्फ एक टेबल क्वेरी के रूप में चल रही हैं। वी $ टेबल देखें।

त्वरित उदाहरण:

SELECT sid, 
     opname, 
     sofar, 
     totalwork, 
     units, 
     elapsed_seconds, 
     time_remaining 
FROM v$session_longops 
WHERE sofar != totalwork; 
1

ध्यान रखें कि डेटाबेस पर ऐसी प्रक्रियाएं हैं जो वर्तमान में सत्र का समर्थन नहीं कर सकती हैं।

आप सभी प्रक्रियाओं में रुचि रखते हैं आप वी $ प्रक्रिया (या आरएसी पर जीवी $ प्रक्रिया) को देखने के लिए चाहता हूँ

3

यह एक एसक्यूएल वह यह है कि वर्तमान में "सक्रिय" पता चलता है: -

select S.USERNAME, s.sid, s.osuser, t.sql_id, sql_text 
from v$sqltext_with_newlines t,V$SESSION s 
where t.address =s.sql_address 
and t.hash_value = s.sql_hash_value 
and s.status = 'ACTIVE' 
and s.username <> 'SYSTEM' 
order by s.sid,t.piece 
/

यह ताले दिखाता है। कभी-कभी चीजें धीमी गति से जा रहे हैं, लेकिन क्योंकि यह एक ताला के लिए इंतजार को अवरोधित कर रहा है यह है:

select 
    object_name, 
    object_type, 
    session_id, 
    type,   -- Type or system/user lock 
    lmode,  -- lock mode in which session holds lock 
    request, 
    block, 
    ctime   -- Time since current mode was granted 
from 
    v$locked_object, all_objects, v$lock 
where 
    v$locked_object.object_id = all_objects.object_id AND 
    v$lock.id1 = all_objects.object_id AND 
    v$lock.sid = v$locked_object.session_id 
order by 
    session_id, ctime desc, object_name 
/

यह लंबे ऑपरेशन (उदा पूर्ण तालिका स्कैन) की खोज के लिए एक अच्छा एक है। यदि यह बहुत कम परिचालनों के कारण है, तो कुछ भी दिखाई नहीं देगा।

COLUMN percent FORMAT 999.99 

SELECT sid, to_char(start_time,'hh24:mi:ss') stime, 
message,(sofar/totalwork)* 100 percent 
FROM v$session_longops 
WHERE sofar/totalwork < 1 
/
संबंधित मुद्दे