2010-04-06 13 views
16

मेरे पास अंतर्निहित हाइबरनेट का उपयोग करके Grails ढांचे में लागू एक आवेदन है। थोड़ी देर के लिए चलने के बाद, मुझे ओरेकल डीबी त्रुटि मिली और अपमानजनक सूचकांक के पुनर्निर्माण के द्वारा इसे हल किया गया। मुझे आश्चर्य है कि कोई भी संभावित कारण (ओं) और इसे होने से रोकने के तरीकों का प्रस्ताव दे सकता है।क्या कोई सादा अंग्रेजी में ओआरए -29861 त्रुटि और इसके संभावित कारण को समझा सकता है?

की वजह से: org.springframework.jdbc.UncategorizedSQLException:

हाइबरनेट आपरेशन: JDBC बैच अद्यतन निष्पादित नहीं कर सका; एसक्यूएलएक्सएक्सएशन एसक्यूएलएक्सएक्स के लिए एसक्यूएलएक्सप्शन [अपडेट करें आरएसएस_आईएमआई सेट guid = ?, pubdate = ?, link = ?, rss_source_id = ?, title = ?, description = ?, rating_raw = ?, rating_tuned = ?, date_created = ?, date_locked =? जहां आरएसएस_ITEM_आईडी =?]; एसक्यूएल राज्य [99 99 9]; त्रुटि कोड [2 9 861]; ओआरए -29861: डोमेन इंडेक्स चिह्नित किया गया है लोडिंग/FAILED/UNUSABLE

; ORA-29861: डोमेन सूचकांक चिह्नित है लोड हो रहा है/असफल/व्यर्थ

उत्तर

3

http://ora-29861.ora-code.com/

कारण: नेस्टेड अपवाद java.sql.BatchUpdateException है एक प्रयास एक डोमेन का उपयोग करने के लिए बनाया गया है सूचकांक असफल डीडीएल द्वारा निर्मित या चिह्नित किया गया है या किसी डीडीएल ऑपरेशन द्वारा अनुपयोगी चिह्नित किया गया है।

कार्रवाई: रुको, तो निर्दिष्ट सूचकांक चिह्नित है लोड किया जा रहा निर्दिष्ट सूचकांक ड्रॉप अगर यह विफल चिह्नित है ड्रॉप या निर्दिष्ट सूचकांक अगर यह व्यर्थ चिह्नित है पुनर्निर्माण।

उम्मीद है कि यह पर्याप्त संदर्भ होना चाहिए। क्या आप इससे समस्या का पता लगा सकते हैं?

12

डोमेन इंडेक्स एक विशेष प्रकार की अनुक्रमणिका हैं। ओसीआई का उपयोग करके अपना खुद का निर्माण करना संभव है लेकिन संभावना है कि आप ओरेकल टेक्स्ट द्वारा पेश किए गए इंडेक्स प्रकारों में से एक का उपयोग कर रहे हैं। मैं यह कहता हूं क्योंकि आपकी तालिका में मुफ्त टेक्स्ट कॉलम शामिल हैं।

सबसे अधिक उपयोग किया जाने वाला टेक्स्ट इंडेक्स CTXSYS.CONTEXT अनुक्रमणिका प्रकार है। इस सूचकांक प्रकार के बारे में बिंदु यह है कि यह लेनदेन को बनाए रखा नहीं जाता है, ताकि बड़े दस्तावेजों को अनुक्रमणित करने में शामिल प्रयास को कम किया जा सके। इसके बजाए क्या होता है कि एक डेटाबेस प्रक्रिया जैसे पृष्ठभूमि प्रक्रिया, नियमित आधार पर इंडेक्स सिंक्रनाइज़ेशन को बंद कर देती है। यह सिंक्रनाइज़ होने पर सूचकांक अनुपयोगी है। यदि resync किसी भी कारण से विफल रहता है तो आपको इंडेक्स को छोड़ना और फिर से बनाना होगा।

क्या यह नियमित घटना है? यदि ऐसा है तो आपको अपने आवेदन को फिर से मूल्यांकन करने की आवश्यकता हो सकती है। शायद एक अलग प्रकार की अनुक्रमणिका (जैसे कि CTXSYS.CTXCAT) अधिक उपयुक्त हो सकती है। एक त्रुटि जो मुझे आपके त्रुटि संदेश के बारे में बताती है वह यह है कि आपका अपडेट स्टेटमेंट प्राथमिक कुंजी की तरह दिखने वाले कई कॉलम को छूता है। इससे मुझे लगता है कि आपके पास एक सामान्य जेनेरिक अपडेट स्टेटमेंट है जो हर कॉलम को सेट करता है चाहे वह वास्तव में बदल गया हो। सामान्य सूचकांक के साथ यह बुरा अभ्यास है; यदि आप टेक्स्ट इंडेक्स का उपयोग कर रहे हैं तो यह आपके एप्लिकेशन को मार देगा।

select index_name,index_type,status,domidx_status,domidx_opstatus from user_indexes where index_type like '%DOMAIN%' and (domidx_status <> 'VALID' or domidx_opstatus <> 'VALID'); 

सूचकांक उपयोग के पुनर्निर्माण के लिए::

17

टूटा सूचकांक उपयोग पता लगाने के लिए

alter index INDEX_NAME rebuild; 
+0

क्या होगा यदि मैं क्वेरी से ऊपर है लेकिन अभी भी यह त्रुटि उत्पन्न हो रही है से कोई भी पंक्ति मिल रहा है? – Dish

+0

मुझे लगता है, आप इंडेक्स को हटाने और इसे फिर से बनाने का प्रयास कर सकते हैं। – vagovszkym

+0

इंडेक्स को पुनर्निर्माण करना मेरे लिए काम नहीं कर रहा था, लेकिन ओरेकल एसक्यूएल डेवलपर में इंडेक्स पर नेविगेट करने और एसक्यूएल टैब पर क्लिक करने से मुझे पता चला कि इंडेक्स कैसे बनाया जाए। इसे छोड़कर और फिर उसी सटीक एसक्यूएल कोड से इसे फिर से बनाना। – ArtOfWarfare

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