कुछ चीजें हैं जो इस समस्या का कारण बन सकती हैं, लेकिन इससे पहले कि आप जेडीबीसी के साथ शुरू करें, आपको यह सुनिश्चित करने की आवश्यकता है कि आप SQL * प्लस का उपयोग करके डेटाबेस से जुड़ सकते हैं। यदि आप SQL * प्लस से परिचित नहीं हैं, तो यह Oracle डेटाबेस से जुड़ने के लिए एक कमांड-लाइन टूल है जो लंबे समय तक Oracle का एक मानक हिस्सा रहा है और यह Oracle XE के साथ शामिल है।
जब एक Oracle डेटाबेस से JDBC का उपयोग करके कनेक्ट किया जाता है, तो आप सीधे डेटाबेस से कनेक्ट नहीं होते हैं। इसके बजाय, आप एक TNS श्रोता से कनेक्ट होते हैं, जो तब आपको डेटाबेस से जोड़ता है। त्रुटि का ORA-12505
अर्थ है कि श्रोता ऊपर था और आप उससे कनेक्ट कर सकते थे, लेकिन यह आपको डेटाबेस से नहीं जोड़ सकता था क्योंकि यह नहीं जानता कि वह डेटाबेस चालू है। इसके लिए दो कारण हैं:
- डेटाबेस शुरू नहीं किया गया है,
- डेटाबेस श्रोता के साथ पंजीकृत नहीं है, उदाहरण के लिए क्योंकि श्रोता से पहले डेटाबेस शुरू किया गया था। (जब डेटाबेस शुरू होता है, तो यह एक श्रोता के साथ खुद को पंजीकृत करता है यदि यह पहले से ही चल रहा है। यदि श्रोता नहीं चल रहा है, तो डेटाबेस खुद को पंजीकृत नहीं करता है, और यदि श्रोता शुरू होता है, तो यह उन डेटाबेसों की तलाश में नहीं जाता है जो हो सकता है। इसके साथ रजिस्टर करें।)
ORA-12505 का अर्थ है कि श्रोता उस डेटाबेस के बारे में जानता है, लेकिन श्रोता को डेटाबेस से सूचना नहीं मिली है कि डेटाबेस ऊपर है। (यदि आप गलत डेटाबेस से जुड़ने की कोशिश कर रहे थे, गलत SID का उपयोग करके, आपको एक ORA-12154 त्रुटि मिलेगी "TNS: कनेक्टेड पहचानकर्ता को निर्दिष्ट नहीं कर सका"।
सेवाएँ स्नैप-इन में ओरेकल सेवाएँ क्या चल रही हैं? (इसे कंट्रोल पैनल से खोलें> एडमिनिस्ट्रेटिव टूल्स> सर्विसेज, या सिर्फ स्टार्ट> रन> services.msc
।) आपको OracleServiceXE और OracleXETNSListener सेवाओं को चलाने की आवश्यकता है।
यदि दोनों सेवाएं शुरू कर दी गई हैं, तो क्या आप कमांड प्रॉम्प्ट पर निम्न में से किसी का उपयोग करके SQL * प्लस में डेटाबेस से जुड़ सकते हैं? (मैं मान रहा हूँ कि आप इन्हें उस मशीन पर चला रहे हैं जिसे आपने Oracle XE स्थापित किया है।)
sqlplus प्रणाली / सिस्टम-पासवर्ड @XE
sqlplus प्रणाली / सिस्टम-पासवर्ड
sqlplus / sysdba के रूप में
( system-password
Oracle XE इंस्टॉलेशन के दौरान SYS और सिस्टम उपयोगकर्ताओं के लिए आपके द्वारा निर्धारित पासवर्ड से बदलें ।)
इन तीनों में से पहला TNS श्रोता के माध्यम से जुड़ता है, लेकिन दूसरा दो सीधे श्रोता के माध्यम से डेटाबेस से जुड़ता है, और केवल तभी काम करता है जब आप डेटाबेस के समान मशीन पर हों। यदि पहले एक विफल रहता है, लेकिन अन्य दो सफल होते हैं, तो जेडीबीसी कनेक्शन भी विफल हो जाएंगे। यदि ऐसा है, तो अन्य दो में से किसी एक का उपयोग करके डेटाबेस से कनेक्ट करें और चलाएं ALTER SYSTEM REGISTER
। फिर SQL * प्लस से बाहर निकलें और पहले फॉर्म को फिर से आज़माएँ।
यदि तीसरा विफल हो जाता है, लेकिन दूसरा काम करता है, तो अपने उपयोगकर्ता खाते को ora_dba समूह में जोड़ें। इसे कंट्रोल पैनल> कंप्यूटर प्रबंधन> स्थानीय उपयोगकर्ताओं और समूहों में करें।
एक बार जब आप फॉर्म के कनेक्शन प्राप्त कर सकते हैं
sqlplus प्रणाली / सिस्टम-पासवर्ड @XE
काम करने के लिए, आपको JDBC के माध्यम से Oracle XE से जुड़ने में सक्षम होना चाहिए। (संयोग से, आपने हमें JDBC कोड नहीं दिखाया है जिसे आप डेटाबेस से कनेक्ट करने के लिए उपयोग कर रहे हैं, लेकिन मुझे संदेह होगा कि यह संभवतः बहुत सही है; कनेक्शन स्ट्रिंग के कुछ भाग गलत थे, तो अन्य कई त्रुटियाँ होंगी।)