2009-09-09 13 views
5

शायद यह सामान्य है, लेकिन मेरे ओरेकल 11 जी डेटाबेस में मैं ओरेकल के एसक्यूएल डेवलपर का उपयोग कर प्रोग्रामर देख रहा हूं नियमित रूप से संयुक्त यूजीए और पीजीए मेमोरी के 100 एमबी से अधिक का उपभोग करता हूं। मैं जानना चाहता हूं कि यह सामान्य है और इसके बारे में क्या किया जा सकता है। हमारा डेटाबेस विंडोज 2008 के 32 बिट संस्करण पर है, इसलिए स्मृति सीमाएं बढ़ती चिंता बन रही हैं। मैं निम्न क्वेरी का उपयोग कर रहा स्मृति के उपयोग को दिखाने के लिए:एसक्यूएल डेवलपर 100 एमबी पीजीए

SELECT e.SID, e.username, e.status, b.PGA_MEMORY 
FROM v$session e 
LEFT JOIN 
    (select y.SID, y.value pga, 
     TO_CHAR(ROUND(y.value/1024/1024),99999999) || ' MB' PGA_MEMORY 
    from v$sesstat y, v$statname z 
    where y.STATISTIC# = z.STATISTIC# and NAME = 'session pga memory') b 
ON e.sid=b.sid 
WHERE (PGA)/1024/1024 > 20 
ORDER BY 4 DESC; 

ऐसा लगता है कि संसाधन उपयोग किसी भी समय एक मेज SQLDeveloper में खोला जाता है ऊपर जाता है, लेकिन तब भी जब यह बंद कर दिया है स्मृति दूर जाना नहीं है। समस्या तब खराब होती है जब तालिका को खुले रहते समय क्रमबद्ध किया जाता है क्योंकि ऐसा लगता है कि यह और भी स्मृति का उपयोग करता है। मैं समझता हूं कि यह सॉर्टिंग के दौरान मेमोरी का उपयोग कैसे करेगा, और शायद यह अभी भी खुला होने पर भी, लेकिन बंद होने के बाद मेमोरी का उपयोग करने के लिए मुझे गलत लगता है। क्या कोई इसकी पुष्टि कर सकता है?

अद्यतन: मुझे पता चला कि the UGA is stored in the PGA under dedicated server mode को समझने के कारण मेरी संख्या बंद थी। इससे संख्याएं कम होती हैं, लेकिन समस्या अभी भी बनी हुई है कि एसक्यूएल डेवलपर अत्यधिक पीजीए का उपयोग करता प्रतीत होता है।

उत्तर

3

शायद एसक्यूएल डेवलपर कर्सर को खोला नहीं है। तो यदि आप कोई क्वेरी चलाते हैं जो दस लाख पंक्तियों को टाइप करता है और SQL डेवलपर वहां से केवल 20 पंक्तियां प्राप्त करता है, तो उसे कर्सर को खोलना होगा और आप अधिक स्क्रॉल करना चाहते हैं।

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

एक सत्र उठाओ और चलाएँ:

select sql_id,operation_type,actual_mem_used,max_mem_used,tempseg_size 
from v$sql_workarea_active 
where sid = &SID_OF_INTEREST 

यह दिखाना चाहिए कि क्या कुछ कर्सर अभी भी अपने स्मृति खुला रखा जाता है ...

+0

+1 आप सही हैं। यह SQLDeveloper में तालिका बंद होने के बाद भी स्मृति में इन्हें रखने में प्रतीत होता है। चूंकि संस्करण तीन जल्द ही रिलीज होने की उम्मीद है, इसलिए शायद मैं यह देखने के लिए इंतजार करूँगा कि इसमें कोई समस्या है या नहीं और यदि यह करता है तो एक एसआर खोलें। हम अब इस मुद्दे के बारे में कम चिंतित हैं क्योंकि हमने 64 बिट तक अपग्रेड किया है और स्मृति को तीन गुना बढ़ा दिया है। –

0

क्या आप स्वचालित मेमोरी प्रबंधन का उपयोग कर रहे हैं? यदि हां, तो मैं इस्तेमाल की गई पीजीए मेमोरी के बारे में चिंता नहीं करता।

डॉक्स देखें:

स्वचालित स्मृति प्रबंधन: http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/memory003.htm#ADMIN11011

MEMORY_TARGET: http://download.oracle.com/docs/cd/B28359_01/server.111/b28320/initparams133.htm

वहाँ एक कारण है कि आप 32 बिट ओरेकल का उपयोग कर रहे है? सबसे हालिया हार्डवेयर 64 बिट का समर्थन करता है।

+0

हाँ, हम स्वचालित स्मृति प्रबंधन का उपयोग कर रहे हैं, लेकिन मुझे नहीं लगता कि पीजीए का उपयोग चिंता क्यों नहीं करेगा। निश्चित रूप से सिस्टम पीजीए को अधिक मेमोरी देने के लिए एसजीए का आकार बदल सकता है, हालांकि यदि बफर कैश, साझा पूल या अन्य क्षेत्र बहुत छोटे हो जाते हैं तो यह प्रदर्शन समस्याओं का कारण बन जाएगा। –

+0

हमारा हार्डवेयर 64 बिट का समर्थन करता है और हमने हाल ही में 11 जी के साथ विंडोज 2008 64 बिट में माइग्रेट करने का प्रयास किया है, लेकिन परीक्षण में पाया गया है कि ओरेकल अब 11 जी में विषम सेवाओं का समर्थन नहीं करता है और प्रतिस्थापन dg4odbc केवल 32 बिट संस्करण पर काम करता है। माना जाता है कि 11.2 में समर्थन आ रहा है। मेटलिंक पर 361676.1 देखें जो इसे समझाता है और एक अस्वीकार्य कामकाज देता है। –

+1

>> हालांकि यदि बफर कैश, साझा पूल या अन्य क्षेत्र बहुत छोटे हो जाते हैं तो यह प्रदर्शन समस्याओं का कारण बन जाएगा। यदि आप एएमएम का उपयोग कर रहे हैं, तो आपको स्मृति को प्रबंधित करने के लिए ओरेकल पर भरोसा करना चाहिए। जब आपके पास वास्तविक प्रदर्शन समस्या होती है, तो आप जांच के लिए ओरेकल में विभिन्न टूल का उपयोग कर सकते हैं। यदि आप उत्सुक हैं, तो आप डेवलपर सत्र का पता लगा सकते हैं और एक विचार प्राप्त कर सकते हैं कि वे क्या कर रहे हैं जो पीजीए मेमोरी का उपयोग कर रहा है। उम्मीद है कि 11 जीआर 2 आपके एचएस मुद्दे को ठीक करेगा। 32 बिट्स पर ओरेकल चलाना दर्दनाक है। –

0

ओरेकल, विशेष रूप से एएमएम के साथ, आप जिस मशीन को देते हैं उस पर स्मृति के हर बिट का उपयोग करेंगे। अगर स्मृति को आवंटित करने का कोई कारण नहीं है तो ऐसा नहीं होगा। स्टोरेज स्पेस के साथ यह वही है: यदि आप 20 जीबी उपयोगकर्ता डेटा हटाते हैं तो ओएस पर स्थान वापस नहीं किया जाता है। जब तक आप स्पष्ट रूप से टेबल स्पेस को कॉम्पैक्ट नहीं करते हैं तब तक ओरेकल इसे तब तक पकड़ लेगा।

मेरा मानना ​​है कि एक साधारण परीक्षण से आपकी चिंताओं को दूर करना चाहिए। यदि यह 32 बिट है, और प्रत्येक एसक्यूएल डेवलपर सत्र 100 एमबी रैम का उपयोग कर रहा है, तो आपको कम-स्मृति समस्या के कारण केवल कुछ सौ सत्र खोलने की आवश्यकता होगी ... यदि वास्तव में कोई है।

+0

मैंने परीक्षण किया है क्योंकि आपने सत्र बनाने और स्मृति मेमोरी त्रुटियों से बाहर होने तक स्मृति का उपयोग करने का सुझाव दिया था। SQLDeveloper में मेरे पहले सत्र के लिए मैंने तालिका के डेटा टैब को खोला और तालिका को सॉर्ट किया। कनेक्शन तब 65 एमबी मेमोरी का उपयोग कर रहा था। मैंने टेबल बंद कर दिया, लेकिन कनेक्शन 65 एमबी पकड़ रहा। मैंने अन्य सत्र बनाने और मेमोरी का उपयोग करना शुरू कर दिया जब तक कि मुझे ओआरए -04030 प्रोसेस मेमोरी से बाहर नहीं मिला। मेरा मूल सत्र अभी भी 65 एमबी का उपयोग कर रहा था और जब तक मैंने इसे बंद नहीं किया तब तक ऐसा किया। –