एकाधिक Oracle उदाहरण - क्या यह एक अच्छा अभ्यास है?


9

मेरे एक ग्राहक ने हमारे उत्पाद के db को सोलारिस मशीन में तैनात किया है जिसमें पहले से ही Oracle के 3 उदाहरण हैं। तो, अभी एक ही मशीन पर Oracle के 4 उदाहरण चल रहे हैं। और अब हम प्रदर्शन समस्याओं का सामना कर रहे हैं।

मेरे पास अन्य इंस्टेंस या मशीन तक पहुंच नहीं है, और मेरे पास जितने भी उपकरण हैं वे सभी अलर्ट हैं। Ilog, AWR और ADDM। मुझे पता है कि कई उदाहरणों से संबंधित कुछ है, लेकिन मैं इसे साबित नहीं कर सकता।

तो, मेरा सवाल यह है कि क्या आपने भी ऐसी ही स्थिति का अनुभव किया है? मुझे इससे कैसे निपटना चाहिए? मैं कई उदाहरणों से संबंधित प्रदर्शन के मुद्दों की पहचान कैसे कर सकता हूं?

जवाबों:


8

इसहाक, अधिमानतः हम एक सर्वर पर एक उदाहरण चलाते हैं और विभिन्न अनुप्रयोगों को स्कीमाटेबस में स्कीमा और सेवाओं के रूप में लागू करते हैं। यदि सर्वर में पर्याप्त मेमोरी है, तो कोई समस्या नहीं होगी, यदि एप्लिकेशन सभी अच्छे ओरेकल नागरिकों की तरह व्यवहार करते हैं। जैसे ही कोई एप्लिकेशन होता है जो बाइंड चर का उपयोग नहीं करता है मेजबान पर एक बढ़ती हुई पीड़ा है। मौजूदा कनेक्शनों का फिर से उपयोग करने के बजाय हर कुछ सेकंड में नए कनेक्शन बनाते रहने वाले अनुप्रयोगों के लिए भी यही है। ऑटो कमिट जैसी चीजें भी स्थिति को बेहतर बनाने में मदद नहीं करती हैं। आपके आवेदन का सामान्य व्यवहार क्या है? क्या यह बड़े अपडेट करता है? यह कब एक कमिट करता है? कितना redo उत्पन्न / घंटा है? क्या आपका ऐप बाइंड चर का उपयोग करता है? कई मामलों में, ऑनलाइन रीडोलॉग फ़ाइलों का स्थान महत्वपूर्ण है। यदि एप्लिकेशन बहुत अधिक रीडो उत्पन्न करता है (या ऐसा करने वाले किसी अन्य ऐप के साथ प्रतिस्पर्धा करता है), तो लॉगर राइटर धीमा हो जाएगा और एक बड़ा प्रदर्शन गिरावट का कारण बन जाएगा क्योंकि सत्र लॉगफ़ाइल लिखने के पूरा होने की प्रतीक्षा कर रहा है। आपको ग्राहक को एक डिस्क लेआउट दें जहां रेडो समर्पित रेड -10 डिस्क पर हैं और देखें कि यह कितना मदद करता है। मेमोरी आवंटन की स्थिति का भी पता लगाएं। उपलब्ध स्मृति के उचित पुनर्वितरण की आवश्यकता हो सकती है।

आशा है कि ये आपकी मदद करेगा


तुम सही हो। हम अपने उदाहरण की निगरानी करते हैं और जहां भी हम कर सकते हैं अनुकूलन करते हैं। लेकिन प्रदर्शन स्थिर नहीं है, कभी-कभी यह बिना किसी स्पष्ट कारण के साथ गिरता है (हमारी तरफ से)
आइजैक ए। नुग्रोहो

इसहाक, कितनी बार डेटाबेस को फिर से शुरू किया जाता है, यह किस संस्करण में है और क्या आपके पास स्तंभों पर हिस्टोग्राम हैं, जो ऑटो-ऑटो प्रक्रिया द्वारा उत्पन्न होते हैं? क्या आप बाइंड वैरिएबल्स और ऑप्टिमाइज़र प्री पीकिंग का उपयोग करते हैं?
ik_zelf

2

एक ही सर्वर पर कई इंस्टेंसेस चलाना और कुछ मामलों में आवश्यक है। Oratab को विशेष रूप से कई उदाहरणों को प्रबंधित करने के लिए डिज़ाइन किया गया है। ऐसे मामलों में जहां आपके पास कई स्वतंत्र अनुप्रयोग हैं, प्रत्येक एप्लिकेशन के लिए एक उदाहरण होना बेहतर हो सकता है।

पर्याप्त याददाश्त का होना महत्वपूर्ण है। साझा मेमोरी में Oracle SGA का निर्माण करता है। यदि आपके पास पर्याप्त मेमोरी नहीं है तो SGA या प्रक्रियाओं में और बाहर स्वैप करना शुरू हो जाएगा। इसे थ्रैशिंग के रूप में जाना जाता है, और एक महत्वपूर्ण प्रदर्शन दंड का परिणाम होता है।

छोटे SGA के साथ चलने के लिए इंस्टेंस को ट्यून करना संभव हो सकता है। Oracle SGA आकार को ट्यून करने में मदद करने के लिए उपकरण प्रदान करता है। यदि किसी भी इंस्टेंसेस में बहुत अधिक एसजीए है तो यह सभी इंस्टेंस को दंडित करेगा।

मेमोरी के लिए एक और उपयोग जो महत्वपूर्ण है वह बफर स्पेस है। यह द्वितीयक कैश के रूप में कार्य करता है, और महत्वपूर्ण रीड I / O को समाप्त कर सकता है।

रनिंग sar(एक यूनिक्स अड्डों ओ / एस को मानते हुए) आपको समस्या का पता लगाने के लिए अच्छा निदान दे सकता है। इसी तरह की समस्याएं या तो स्वैपिंग या डिस्क I / O संतृप्ति हैं। रैम को जोड़ने से इन समस्याओं का पता चल जाएगा।

डिस्क I / O संतृप्ति को कुछ टेबलस्पेस को अन्य डिस्क पर ले जाकर भी निपटा जा सकता है। मैं आम तौर पर Oracle को कॉन्फ़िगर करता हूं ताकि I / O को अधिक से अधिक डिस्क में वितरित किया जा सके।

EDIT: ये कुछ मामले हैं जिनके लिए अलग-अलग उदाहरणों की आवश्यकता हो सकती है।

  • यदि आप एक ही सर्वर पर Oracle के विभिन्न संस्करणों को चलाते हैं तो यह हमेशा आवश्यक होता है। एप्लिकेशन हमेशा प्रमाणित या नवीनतम संस्करण के साथ काम करने में सक्षम नहीं होते हैं।
  • आप ऐसे उदाहरण चाहते हैं जो स्वचालित रूप से एक समय में वापस लुढ़का जा सके। (हालांकि मैं इसे हतोत्साहित करता हूं, मैंने इसका इस्तेमाल एक स्वचालित परीक्षण वातावरण के लिए किया है।)
  • यदि आपके पास अनुप्रयोगों में हार्ड-कोडित स्कीमा संदर्भ है, तो आपको नामस्थान टकराव से निपटने के लिए विभिन्न उदाहरणों की आवश्यकता हो सकती है।
  • अलग-अलग उदाहरणों का उपयोग करके सुरक्षा आवश्यकताओं को आसान बनाया जा सकता है। इस मामले में विभिन्न सर्वरों का उपयोग करना उचित हो सकता है।
  • एक ही सर्वर पर एक ही डेटाबेस (विकास, परीक्षण, उपयोगकर्ता स्वीकृति, प्रशिक्षण और उत्पादन) के विभिन्न संस्करणों को चलाना अलग-अलग उदाहरणों के साथ सुरक्षित है। मैं इन सभी वातावरणों को एक ही सर्वर पर नहीं चलाऊंगा, लेकिन अक्सर एक ही सर्वर पर दो या अधिक चलाऊंगा।

क्या आप ऐसे उदाहरण प्रदान कर सकते हैं जहाँ इसके कई उदाहरणों को चलाना आवश्यक है?
स्कॉटकर

1
@ScottCher मैंने कुछ मामलों को प्रदान करने के लिए अपने उत्तर को संपादित किया है।
२१:१६ पर बिलथोर

1

सबसे महत्वपूर्ण संसाधन RAM है।

प्रत्येक रनिंग ओरेकल इंस्टेंस अपने स्वयं के लिए कुछ रैम आवंटित करता है, जब बस शुरू हुआ और लोड के तहत नहीं।

हम 8 उदाहरणों के साथ 10g और 11g के साथ 10g चला रहे हैं, लेकिन ये विकास सर्वर हैं। ओएस के पुनरारंभ के बाद कुछ ओरेकल सेवाएं स्वचालित रूप से शुरू नहीं होती हैं और इसे मैन्युअल रूप से शुरू किया जाना चाहिए: ओराडिम -स्टार्टअप -एसआईडी xxx।

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

मैं आपके मामले में, एक मशीन पर अधिक उदाहरणों के साथ प्रत्येक उदाहरण के लिए SGA छोटा हो जाता है, कम precompiled sql को कैश किया जा सकता है और मशीन को अधिक sql संकलन करना पड़ता है, जो प्रदर्शन को कम करता है।

RAM जोड़ने से आपकी स्थिति में मदद मिल सकती है।


2
आपके द्वारा SQL सर्वर के अलग-अलग होने का कारण नामकरण की अधिक बात है। प्रक्रियाओं का एक समूह और इसकी समर्पित स्मृति एक उदाहरण है। यदि आप SQL सर्वर डेटाबेस जोड़ते हैं और यह नई प्रक्रिया नहीं जोड़ता है, तो यह एक उदाहरण नहीं है। उस स्थिति में यह स्कीमा जोड़ने के बहुत करीब है।
स्टेफ़नी पेज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.