2008-10-06 7 views
10

ओरेकल पूछे जाने वाले प्रश्न अस्थायी तालिका अंतरिक्ष परिभाषित करता है:डिस्कवर क्या प्रक्रिया/क्वेरी ओरेकल अस्थायी टेबल-स्पेस उपयोग कर रहा है के रूप में इस

अस्थाई टेबलस्पेस और वैश्विक अस्थायी तालिकाओं के भंडारण के लिए उपयोग किया जाता है डेटाबेस के लिए अंतरिक्ष का प्रबंधन करने के प्रकार आपरेशनों। उदाहरण के लिए, यदि आप दो बड़ी तालिकाओं में शामिल हो जाते हैं, और ओरेकल मेमोरी में सॉर्ट नहीं कर सकता है, तो स्पेस ऑपरेशन करने के लिए अस्थायी टेबल स्पेस में आवंटित किया जाएगा।

यह बढ़िया है, लेकिन मुझे अंतरिक्ष का उपयोग करने के बारे में और जानकारी चाहिए। एप्लिकेशन डिज़ाइन के क्विर्क के कारण अधिकांश प्रश्न सॉर्टिंग करते हैं, इसलिए मुझे इसे क्लाइंट निष्पादन योग्य, लक्ष्य तालिका या SQL कथन में सीमित करना होगा।

अनिवार्य रूप से, मैं सुराग ढूंढ रहा हूं कि मुझे यह बताएं कि इसमें क्या गलत हो सकता है (बल्कि बड़े आवेदन)। किसी भी तरह का सुराग उपयोगी हो सकता है, जब तक कि यह "सॉर्टिंग" से अधिक सटीक हो।

उत्तर

15

मुझे यकीन नहीं है कि आपको पहले से कौन सी जानकारी सौंपनी है, लेकिन निम्न क्वेरी का उपयोग करने से पता चलता है कि कौन सा प्रोग्राम/उपयोगकर्ता/सत्र आदि वर्तमान में आपके अस्थायी स्थान का उपयोग कर रहे हैं।

SELECT b.TABLESPACE 
     , b.segfile# 
     , b.segblk# 
     , ROUND ( ( (b.blocks * p.VALUE)/1024/1024), 2) size_mb 
     , a.SID 
     , a.serial# 
     , a.username 
     , a.osuser 
     , a.program 
     , a.status 
    FROM v$session a 
     , v$sort_usage b 
     , v$process c 
     , v$parameter p 
    WHERE p.NAME = 'db_block_size' 
    AND a.saddr = b.session_addr 
    AND a.paddr = c.addr 
ORDER BY b.TABLESPACE 
     , b.segfile# 
     , b.segblk# 
     , b.blocks; 

एक बार जब आप यह पता लगाने के जो सत्र क्षति कर रहा है, तो एसक्यूएल पर एक नज़र निष्पादित किया जा रहा है, और आप सही रास्ते पर होना चाहिए। अंगूठे का

3

एक नियम यह है कि लगभग किसी भी प्रश्न है कि एक दूसरे की तुलना में अधिक समय लगता है शायद कुछ अस्थायी स्थान का उपयोग करता है, और ये सिर्फ आदेश सारांश लेकिन यह भी शामिल लोगों को नहीं कर रहे हैं:

  1. ग्रुप सारांश SORT GroupBy से पहले (10.2 के बाद से 10.2 और हैश GroupBy)
  2. HASH मिलती है या मर्ज
  3. वैश्विक अस्थायी टेबल्स (जाहिर है)
  4. सूचकांक पुनर्निर्माण
मिलती है

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

+0

यह सब दर्ज किया जाएगा वी $ sort_usage? –

+0

ओरेकल दस्तावेज़ों के अनुसार, वी $ TEMPSEG_USAGE में सभी अलग-अलग संचालन शामिल हैं जिन्हें TEMP स्पेस की आवश्यकता होती है। –

3

धन्यवाद उसके जवाब के लिए माइकल Oshea के लिए चला जाता है,

लेकिन मामले में आप Oracle RAC कई उदाहरण है, तो आप इस की आवश्यकता होगी ...

SELECT b.TABLESPACE 
     , b.segfile# 
     , b.segblk# 
     , ROUND ( ( (b.blocks * p.VALUE)/1024/1024), 2) size_mb 
     , a.inst_ID 
     , a.SID 
     , a.serial# 
     , a.username 
     , a.osuser 
     , a.program 
     , a.status 
    FROM gv$session a 
     , gv$sort_usage b 
     , gv$process c 
     , gv$parameter p 
    WHERE p.NAME = 'db_block_size' 
    AND a.saddr = b.session_addr 
    AND a.paddr = c.addr 
    -- AND b.TABLESPACE='TEMP2' 
ORDER BY a.inst_ID , b.TABLESPACE 
     , b.segfile# 
     , b.segblk# 
     , b.blocks; 

और इस स्क्रिप्ट को मारने उत्पन्न करने के लिए बयान: कृपया समीक्षा कौन-सा सत्र आप की हत्या हो जाएगा ...

SELECT b.TABLESPACE, a.username , a.osuser , a.program , a.status , 
     'ALTER SYSTEM KILL SESSION '''||a.SID||','||a.SERIAL#||',@'||a.inst_ID||''' IMMEDIATE;' 
    FROM gv$session a 
     , gv$sort_usage b 
     , gv$process c 
     , gv$parameter p 
    WHERE p.NAME = 'db_block_size' 
    AND a.saddr = b.session_addr 
    AND a.paddr = c.addr 
    -- AND b.TABLESPACE='TEMP' 
ORDER BY a.inst_ID , b.TABLESPACE 
     , b.segfile# 
     , b.segblk# 
     , b.blocks; 
+0

यह सोना है। धन्यवाद! –

संबंधित मुद्दे