आप ओरेकल डेटाबेस पर SQL निष्पादन कैसे दिखाते हैं?


26

आप उस SQL ​​को कैसे दिखा सकते हैं जो वर्तमान में oracle db पर निष्पादित हो रही है?

उपयोगी होने वाली अतिरिक्त जानकारी में उपयोगकर्ता, सत्र आईडी आदि शामिल होंगे।

जवाबों:


35

अधिकांश जानकारी v $ सत्र में उपलब्ध है ... और SQL पाठ को v $ sql या v $ sqltext_with_newlines से पकड़ा जा सकता है ...

यहाँ एक प्रश्न है कि मैं अक्सर उस प्रारूप का उपयोग करता हूँ, इन-फ्लाइट एसक्यूएल, जो सबसे लंबे समय तक चल रहा है।

-- In Flight SQL 
SELECT nvl(ses.username,'ORACLE PROC')||' ('||ses.sid||')' USERNAME,
       SID,   
       MACHINE, 
       REPLACE(SQL.SQL_TEXT,CHR(10),'') STMT, 
      ltrim(to_char(floor(SES.LAST_CALL_ET/3600), '09')) || ':'
       || ltrim(to_char(floor(mod(SES.LAST_CALL_ET, 3600)/60), '09')) || ':'
       || ltrim(to_char(mod(SES.LAST_CALL_ET, 60), '09'))    RUNT 
  FROM V$SESSION SES,   
       V$SQLtext_with_newlines SQL 
 where SES.STATUS = 'ACTIVE'
   and SES.USERNAME is not null
   and SES.SQL_ADDRESS    = SQL.ADDRESS 
   and SES.SQL_HASH_VALUE = SQL.HASH_VALUE 
   and Ses.AUDSID <> userenv('SESSIONID') 
 order by runt desc, 1,sql.piece;

इन फ्लाइट एसक्यूएल का अर्थ क्या है?
टोह

इन-फ़्लाइट = वर्तमान में एक ऑरेकल डेटाबेस पर चल रहा है, या इस मामले में वर्तमान में v $ सत्र और स्थिति = 'सक्रिय' में उपलब्ध है
डेविड मान

9

अच्छा जवाब यहाँ मिला ।

निम्न वर्ग निष्पादित करें:

select x.sid
      ,x.serial#
      ,x.username
      ,x.sql_id
      ,x.sql_child_number
      ,optimizer_mode
      ,hash_value
      ,address
      ,sql_text
from   v$sqlarea sqlarea
      ,v$session x
where  x.sql_hash_value = sqlarea.hash_value
and    x.sql_address    = sqlarea.address
and    x.username       is not null;

यदि आउटपुट अपठनीय है, तो LINESIZE बदलें ( यहाँ से लें ):

SET LINESIZE 20000

यदि ऊपर दिया गया sql काम नहीं करता है, तो आपको sysdba के रूप में लॉग इन करना पड़ सकता है:

sqlplus '/as sysdba'

गुड
आंसर की

@ गेरैट I ने लिंक को कैश्ड आर्काइव में अपडेट किया।
क्लार्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.