ORA-28040: कोई मिलान प्रमाणीकरण प्रोटोकॉल अपवाद नहीं है


92

मैं अपने ग्रेल्स प्रोजेक्ट को विंडोज़ (8) सिस्टम में Oracle डेटाबसे ( Oracle 12c ) से जोड़ने की कोशिश कर रहा हूँ । हालाँकि, जब भी मैं अपना आवेदन चलाता हूं तो मुझे निम्न अपवाद मिलते हैं:

Caused by: org.apache.commons.dbcp.SQLNestedException: 
Cannot create PoolableConnectionFactory (ORA-28040: 
No matching authentication protocol)

Caused by: 
java.sql.SQLException: ORA-28040: 
No matching authentication protocol

इंटरनेट सुझाव के अनुसार मैंने अपनी *.oraफ़ाइल को संपादित करने की भी कोशिश की लेकिन यह काम नहीं कर रहा है।

मैंने sqlnet.oraफ़ाइल में स्निपेट निम्नलिखित जोड़ा :

SQLNET.ALLOWED_LOGON_VERSION=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10

यहाँ मैंने असाइन करने की कोशिश की (10,11,12) लेकिन उनमें से कोई भी काम नहीं कर रहा है।

क्या कोई इसके साथ मेरी मदद कर सकता है ?


कौन सा sqlnet.ora आपने संपादित किया, जो क्लाइंट या सर्वर पर है?
जॉन हेलर

1
मुझे यकीन नहीं है क्योंकि मैं इसके लिए नौसिखिया हूं। हालाँकि, मैंने जो फ़ाइल संपादित की है, उसमें केवल कुछ ही लाइन थी। यह शामिल है: '# sqlnet.ora नेटवर्क कॉन्फ़िगरेशन फ़ाइल: E: \ app \ adhikariaman01 \ product \ 12.1.0 \ dbhome_1 \ network \ admin \ sqlnet.ora # Oracle कॉन्फ़िगरेशन टूल द्वारा उत्पन्न। # यह फाइल वास्तव में netca द्वारा निर्मित है। लेकिन अगर ग्राहक "सॉफ़्टवेयर ओन्ली" को # इंस्टॉल करना चुनते हैं, तो यह फ़ाइल मौजूद नहीं होगी और मूल # प्रमाणीकरण के बिना, वे NT पर डेटाबेस से कनेक्ट नहीं कर पाएंगे। SQLNET.AUTHENTICATION_SERVICES = (NTS) NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT) '
अमन

2
डेटाबेस सर्वर के लिए फ़ाइल की तरह लगता है। ये समस्याएं वास्तव में कठिन हो सकती हैं। क्या आप SQL * प्लस का उपयोग करके डेटाबेस सर्वर से जुड़ सकते हैं? क्या आप JDBC के पतले ग्राहक का उपयोग कर रहे हैं, और यदि आप एक मोटे ग्राहक की कोशिश कर सकते हैं?
जॉन हेलर

हां, मैं SQL * प्लस
अमन अधिकारी

1
मैंने मसला हल किया :)। मैंने ojdbc14.jar फ़ाइल को हटा दिया और इसके बजाय ojdbc6.jar का उपयोग किया और इसने मेरे लिए काम किया। वैसे भी जवाब देने के लिए धन्यवाद।
अमन अधकारी

जवाबों:


152

मैंने ojdbc14.jar फ़ाइल को हटा दिया और इसके बजाय ojdbc6.jar का उपयोग किया और इसने मेरे लिए काम किया


3
उसी समस्या का अनुभव करते हुए pentaho kettle से Oracle 12c को जोड़ने का प्रयास कर रहे हैं। ojdbc14.jar और इसके पूरी तरह से काम को हटा दिया!
प्रातः

17
कम से कम एक संक्षिप्त व्याख्या क्यों यह काम करना चाहिए काफी उपयोगी होगा।
यूरी क्रवेट्स

8
मेरे लिए, ojdbc6.jar या ojdbc7.jar में बदलना अभी भी विफल रहा क्योंकि मैं लगातार सेटिंग कर रहा था: oracle.jdbc.thinLogonCapability"="o3"जिसे अब आपको oracle 12c के खिलाफ नहीं करना है। आशा है कि यह किसी और की मदद कर सकता है
जेम्स टोबिन

3
यही कारण है कि ojdbc14.jar हटाने और ojdbc6.jar उपयोग करने के बाद सही काम करता है
सैम

1
@YuriyKrave ojdbc14.jar में 14 नंबर और ojdbc6.jar में नंबर 6 उन जेडीके संस्करण को संदर्भित करता है, जिनके लिए उन्हें लिखा गया था। यदि आप ojdbc14.jar की मेनिफ़ेस्ट फ़ाइल खोलते हैं , तो यह कहता है: विनिर्देश-शीर्षक: "JDK1.4 के साथ उपयोग के लिए Oracle JDBC ड्राइवर वर्ग" इसी प्रकार, ojdbc6.jar JDK1.6 कार्यान्वयन का समर्थन करता है।
मैवरिक

55

यहाँ कुछ पाठ है जो मैंने विशेषज्ञों-विनिमय में पाया :

बग 14575666

12.1 में, SQLNET.ALLOWED_LOGON_VERSION पैरामीटर के लिए डिफ़ॉल्ट मान को 11 में अपडेट किया गया है। इसका मतलब है कि पूर्व -11 G JDBC पतले ड्राइवरों का उपयोग करने वाले डेटाबेस क्लाइंट 12.1 डेटाबेस सर्वरों को प्रमाणित नहीं कर सकते, जब तक कि SQLNET .ALLOWED_LOGON_VERSION पैरामीटर 8 के पुराने डिफ़ॉल्ट पर सेट नहीं हो जाता।

यह ORA-28040 के साथ DBCA का उपयोग कर 10.2.0.5 Oracle RAC डेटाबेस निर्माण का कारण होगा: 12.1 Oracle ASM और Oracle ग्रिड इन्फ्रास्ट्रक्चर वातावरण में कोई मिलान प्रमाणीकरण प्रोटोकॉल त्रुटि नहीं।

वर्कअराउंड: SQLNET.ALLOWED_LOGON_VERSION = 8 को oracle / network / admin / sqlnet.ora फ़ाइल में सेट करें।


केवल संदर्भ के लिए: इसने मेरे लिए ojdbc14.jar फ़ाइल को हटाने और ojdbc6.jar का उपयोग करने के लिए काम नहीं किया
rageit

4
हां, मेरे मामले में यह समस्या हल हो गई, लेकिन एक और गलत: अमान्य उपयोगकर्ता नाम / पासवर्ड। btw मैं oracle jdeveloper 10 से oracle database 12c से जुड़ने की कोशिश कर रहा था। तो इसने उत्तर दिया: stackoverflow.com/questions/14476875/… अंत में: 1) SQLNET.ALLOWED_LOGON_VERSION को 8 2 में बदल दें) SQLNET.AUTHENTICATION_SERVICES (NONE) 3) ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE = 4SE PW द्वारा IDENTIFIED (अब पासवर्ड बदलने के लिए कि हमने केस-सेंसिटिविटी बदल दी)
hello_earth

पार्टी के लिए देर हो चुकी है, लेकिन मैंने भी इस फिक्स की पुष्टि की है। मुझे अपना संस्करण = even सेट करना था, भले ही मैं जेडीबीसी ११ चला रहा था - set से अधिक कुछ भी नया काम नहीं किया।
कीथ

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

5

मैंने ojdbc8.jar का उपयोग करके इस समस्या को हल किया। Oracle 12c ojdbc8.jar के साथ संगत है


5

यह sqlnet.ora के लिए निम्नलिखित को छोड़कर

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

यदि आपको "ORA-01017: अमान्य उपयोगकर्ता नाम / पासवर्ड; लॉगऑन अस्वीकृत" त्रुटि मिलती है, तो आपको अपना पासवर्ड पुनः बनाने की आवश्यकता है।


यदि आपको "ORA-01017: अमान्य उपयोगकर्ता नाम / पासवर्ड; लॉगऑन अस्वीकृत" त्रुटि मिलती है, तो आपको अपना पासवर्ड पुनः बनाने की आवश्यकता है। यह एक जीवन रक्षक था !! धन्यवाद
थॉमस वीसी

3

निम्नलिखित sqlnet.ora को जोड़ने के लिए छोड़कर

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

मैंने क्लाइंट और सर्वर दोनों के साथ निम्नलिखित को भी जोड़ा, जिससे मेरी समस्या हल हो गई

SQLNET.AUTHENTICATION_SERVICES = (NONE)

इसके अलावा ORA-28040 पोस्ट देखें : कोई मिलान प्रमाणीकरण प्रोटोकॉल नहीं


3

मैं ग्रहण का उपयोग कर रहा था और अन्य सभी उत्तरों की कोशिश करने के बाद यह मेरे लिए काम नहीं करता था। अंत में, मेरे लिए जो काम किया ojdb7.jarवह बिल्ड पाथ में शीर्ष पर जा रहा था । यह तब होता है जब कई जार में समान वर्ग होते हैं।

  1. में प्रोजेक्ट का चयन करें Project Explorer
  2. राईट क्लिक करें Project -> Build Path -> Configure Build Path
  3. Order and Exportटैब पर जाएं और चुनेंojdbc.jar
  4. TOPइसे शीर्ष पर ले जाने के लिए बटन पर क्लिक करें

1

जोड़ा जा रहा है

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

सही समाधान sql.ora निर्देशिका है .. \ उत्पाद \ 12.1.0 \ dbhome_1 \ NETWORK \ ADMIN


0

मेरी प्रारंभिक त्रुटि है: ORA-28040: कोई मिलान प्रमाणीकरण प्रोटोकॉल अपवाद नहीं है

मेरा DB संस्करण 12.2 (सोलारिस) और क्लाइंट संस्करण 11.2 (विंडोज़) है। मैंने सर्वर और क्लाइंट sqlnet.ora दोनों में नीचे जोड़ा है

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8 SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

कनेक्ट करते समय, मुझे अमान्य उपयोगकर्ता नाम और पासवर्ड मिला है, इसलिए मैंने डेटाबेस में पासवर्ड (उसी पासवर्ड) को फिर से बनाया है जो मेरी समस्या हल हो गई है।


0

जबकि अधिकांश मामलों के लिए ओजडबेक ड्राइवर जार की जगह समाधान होगा, मेरा मामला अलग था।

यदि आप निश्चित हैं कि आप सही ojdbc ड्राइवर का उपयोग कर रहे हैं। यदि आप वास्तव में उस डेटाबेस से जुड़ रहे हैं जिसे आप सोच रहे हैं, तो दोबारा जांचें। मेरे मामले में jdbc विन्यास (Tomcat / conf में) अलग-अलग डेटाबेस की ओर इशारा कर रहा था जिसमें अलग-अलग Oracle संस्करण थे।


0

बहुत पुराना प्रश्न लेकिन कुछ अतिरिक्त जानकारी प्रदान करना जो किसी और की मदद कर सकता है। मुझे भी उसी त्रुटि का सामना करना पड़ा और मैं 12.1.0.2 ओरेकल डेटाबेस के साथ ojdbc14.jar का उपयोग कर रहा था। ओरेकल आधिकारिक वेब पेज पर यह जानकारी सूचीबद्ध है कि कौन सा संस्करण किस डेटाबेस ड्राइवर का समर्थन करता है। यहाँ लिंक है और ऐसा प्रतीत होता है कि Oracle 12c और Java 7 या 8 के साथ सही संस्करण ojdbc7.jar है।

Ojdbc6.jar में 11.2.0.4 के लिए है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.