2011-12-30 15 views
6

मेरे पास एक तृतीय पक्ष विंडोज सेवा है जो उपकरण को नियंत्रित/मॉनीटर करता है और ओरेकल डेटाबेस अपडेट करता है। उनकी सेवाएं कभी-कभी डेटाबेस में "खराब" होने वाली पंक्ति/कॉलम के बारे में एक त्रुटि की रिपोर्ट करती हैं लेकिन अंतर्निहित डेटाबेस त्रुटि नहीं देती हैं, और उनकी सेवाओं को पुनरारंभ करने की आवश्यकता होती है और सब कुछ ठीक है। वर्तमान संदेह यह है कि हमारे आवेदन/सेवाओं से कुछ जो समान सारणी/पंक्तियों को पढ़/लिखते हैं, हस्तक्षेप कर रहे हैं - यानी किसी प्रकार की अवरुद्ध/लॉकिंग। मुझे संदेह है कि उनके सिस्टम में कुछ प्रकार का रिसाव है क्योंकि यह सप्ताह में एक बार होता है, लेकिन हमारे सिस्टम को इस तरह से फिर से शुरू करने की आवश्यकता नहीं होती है।त्रुटि का कारण खोजने के लिए ओडीबीसी ट्रेस या ओरेकल ट्रेस का उपयोग करना?

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

तो मैं या तो ओडीबीसी ट्रेसिंग काम करने के लिए या मुझे क्या देखने की आवश्यकता है ताकि ओरेकल ट्रेस मेरे सर्वर को मार न सके।

मैं अवरुद्ध त्रुटि की तलाश कर रहा हूं जो ओरेकल थ्रिड-पार्टी सेवा पर लौट रहा है, इसलिए मैं बता सकता हूं कि हम किसी भी तरह से डेटा तक पहुंच में हस्तक्षेप कर रहे हैं या नहीं।

+0

ओच! यदि ओरेकल ट्रेस आपको अपने डीबी का उपयोग करने से रोकता है तो क्या यह जगह शुरू करने की जगह नहीं है? आप साबित कर सकते हैं कि आपको अपना अंत समस्या है जबकि आप वास्तव में नहीं जानते कि तीसरे पक्ष की त्रुटि उनकी गलती है या "तुम्हारा" है। – Ben

+0

क्या तीसरी पार्टी अंतर्निहित ओआरए त्रुटि नहीं देती है? यह बेहद संदिग्ध प्रतीत होता है (या तो खराब लिखा गया है या कहीं कुछ लॉग में है) – tbone

+0

शायद इनमें से एक उत्तर मदद करेगा: http://stackoverflow.com/questions/492705/is-there-any-way-to-log-all- असफल-एसक्यूएल-स्टेटमेंट-इन-ओरेकल -10 जी –

उत्तर

0

यदि डेटाबेस में कोई ब्लॉक दूषित "खराब" है तो यह ओआरए -01578 त्रुटि के रूप में अलर्ट लॉग में दिखाना चाहिए। मैं ओआरए-त्रुटि के लिए संग्रह लॉग खोजूंगा और उसके बाद उस समय की तुलना क्लाइंट त्रुटि पर रिपोर्ट की जा रही है। यह "खराब" की परिभाषा की धारणा बना रहा है। सटीक त्रुटि संदेशों को पोस्ट करना बेहतर होगा।

डेटाबेस में कंबल ट्रेसिंग एक मुश्किल चीज है क्योंकि यह आपके पूरे एप्लिकेशन के प्रदर्शन को प्रभावित करेगी। और इसे पूरे सप्ताह तक छोड़ना संभव नहीं हो सकता है। मैंने एक मामले में भी पाया है (सटीक परिस्थिति को याद नहीं कर सकता) जहां ट्रेसिंग चालू करने से त्रुटि ठीक हो गई है।

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

सत्र की पहचान करने और उस सत्र के लिए एसक्यूएल ट्रेस चालू करने के लिए डीबीए के साथ काम करने का एक और तरीका होगा। इसके अलावा यदि आप अपमानजनक एसक्यूएल स्टेटमेंट्स और पैरामीटर मानों की पहचान कर सकते हैं तो आप सेवा के बाहर की समस्या को दोहराने में सक्षम हो सकते हैं।

मुझे ओआरए-त्रुटि को वापस करने से बचने के लिए अधिकांश ओआरएम का पता चला है। हालांकि यह आमतौर पर संबंधित ओआरएम त्रुटि के साथ अनुप्रयोग सर्वर परत में लॉग इन है।

मैंने इन विधिओं और एप्लिकेशन में शूट त्रुटियों को हल करने के लिए इन तरीकों के विविधताएं उपयोग की हैं। मैं उम्मीद करता हूँ यह उपयोगी है।