2010-01-04 15 views
6

मुझे this article में मिला, कि ओरेकल 10 जी के बाद से, ALTER SESSION का उपयोग करके किसी विशेष कनेक्शन-सत्र को किसी भी पागल SQL फ़ंक्शन की आवश्यकता के बिना स्ट्रिंग केस-असंवेदनशील तुलना करने का एक तरीका है।डिफ़ॉल्ट रूप से ORACLE 11g केस असंवेदनशील

क्या किसी को पता है कि, 11 जी में, डेटाबेस को सभी नए कनेक्शन-सत्रों के लिए डिफ़ॉल्ट रूप से इस मोड में हमेशा संचालित करने का तरीका हो सकता है, जिससे आप कनेक्ट होने पर ALTER SESSION एस चलाने की आवश्यकता को समाप्त कर सकते हैं?

या शायद, एक अतिरिक्त पैरामीटर जो आप अपनी कनेक्शन स्ट्रिंग पर निर्दिष्ट कर सकते हैं जो इसे चालू करेगा?

उत्तर

6

आप खंड का उपयोग कर ओरेकल इनिट फ़ाइल में मानों के रूप में लेख में उल्लिखित NLS_SORT, NLS_COMP पैरामीटर सेट कर सकते हैं।

परिवर्तन प्रणाली आदेशों का उपयोग करने पर जानकारी here मिल सकती है।

NLS_* पैरामीटर के सही उपयोग पर एक अच्छा link है। ध्यान दें कि NLS_SORT पैरामीटर की कुछ सेटिंग्स प्रदर्शन समस्याओं का कारण बन सकती हैं, यानी जब यह बिनरी पर सेट नहीं होती है। ओरेकल डॉक्स राज्य:

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

+0

ड्रॉप करने है कि बोली ओरेकल प्रलेखन से है नहीं है, यह ऑप्टिमाइज़र द्वारा चुने गए पथ के बावजूद "कोई समझ नहीं आता है। इसके लिए एक और उपयोगी संदर्भ है http://download.oracle.com/docs/cd/B19306_01/server.102/b14225/ch5lingsort.htm#sthref650 –

+1

"एनएलएस_ * पैरामीटर के सही उपयोग पर अच्छा लिंक" मैंने आपके उत्तर में प्रदान किया है वही लिंक और जानकारी जो आपने प्रदान की है, सिवाय इसके कि मेरे उत्तर में लिंक 11 जी दस्तावेज से है। –

+0

अब मैं इस मुद्दे के साथ काम कर रहा हूं और मैंने पाया कि प्रदर्शन समस्याओं से बचने के लिए, कॉलम के लिए एक सीआई इंडेक्स बनाया जा सकता है: table_name पर अनुक्रमणिका अनुक्रमणिका_नाम बनाएं (NLSSORT (column_name, 'NLS_SORT = BINARY_CI')); [संदर्भ] (http://geekzspot.blogspot.com.es/2010/01/case-insensitive-oracle-database.html) – Marc

3

निश्चित रूप से आप कर सकते हैं!

इन paramaters स्थापित करने के लिए अनुकूल डीबीए उर प्राप्त करें:

ALTER प्रणाली स्थापित NLS_COMP = भाषाई स्कोप spfile;

वैकल्पिक प्रणाली सेट NLS_SORT = BINARY_AI स्कोप स्पीफ़ल;

यह How to make Oracle Case Insensitive

+0

आरसी के उत्तर में उद्धरण के बारे में क्या। क्या यह पूरी तरह से सिस्टम के प्रदर्शन को नष्ट कर देगा, जैसा कि यह इंगित होगा? – eidylon

3

मैं एक logon trigger का उपयोग कर इन आदेश जारी करने के लिए केस-संवेदी प्रश्नों पाने की कोशिश की पर मेरी संक्षिप्त लेख से लिया जाता है:

execute immediate 'alter session set NLS_SORT=BINARY_CI'; 
execute immediate 'alter session set NLS_COMP=LINGUISTIC'; 

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

मुझे नहीं पता कि सिस्टम स्तर पर ऐसा करने के बाद, ट्रिगर के साथ सत्र स्तर के विपरीत, कोई फर्क पड़ता है या नहीं।

+1

ईक्स! यह काफी भयानक प्रदर्शन हिट है! मुझे विश्वास नहीं है कि ओरेकल ने अभी तक इसके लिए बेहतर समर्थन नहीं जोड़ा है। मेरा मतलब है, अगर आप इनवॉइस या टिप्पणियां या नोट्स खोज रहे हैं या किसी भी सामान्य टेक्स्ट फ़ील्ड को बहुत अधिक पसंद करते हैं तो आपको वास्तव में कोई परवाह नहीं है कि कोई व्यक्ति "बिल्ली को बिल्ली ले गया" या "बिल्ली को बिल्ली को ले गया"। – eidylon

+1

कल ओरेकल सलाहकार से मुलाकात के बाद, हमने पाया कि इन दो सेटिंग्स का उपयोग करने की चाल यह है कि आपको कई स्थानों पर कार्यात्मक इंडेक्स रखना होगा। हमारे मामले में, हम प्राथमिक कुंजी के लिए वर्कर 2 (32) यूयूआईडी का उपयोग करते हैं। दो एनएसएल सेटिंग्स की वजह से, सामान्य पीके इंडेक्स में से कोई भी इस्तेमाल नहीं किया जा रहा था। हमें इंडेक्स को इंडेक्स (nlssort (आईडी, 'NLS_SORT = BINARY_CI') पर इंडेक्स foo_ok बनाना था; हमारे सभी पीके में । –

+1

Egads! यह "द ट्वाइलाइट जोन" के इलाज के लिए "ट्वाइलाइट जोन" जैसी ही चीज़ के रूप में बहुत काम है। – eidylon

0

मुझे 11 जी आर 2 में आवेषण और एनएलएस के साथ एक ही प्रदर्शन समस्या मिली! सौभाग्य से मेरे लिए प्रदर्शन हिट पर्याप्त ऐप परिवर्तन की आवश्यकता नहीं थी।

आप सम्मिलित करें के लिए binary_ci के बिना नहीं कर सकते, तो मैं एक बदलने सत्र सिर्फ डालने और बाद में पहले करना होगा, ताकि आप ट्रिगर

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