ऐसा लगता है कि आपका SID और सेवा नाम एक जैसा नहीं है। एसक्यूएल डेवलपर में आप एसआईडी का उपयोग कर रहे हैं - कम से कम आपके द्वारा दिखाए गए कस्टम जेडीबीसी यूआरएल में - जैसा कि :vdbsl4 में कोलन द्वारा दर्शाया गया है। ।
आपका SQLcl URL सेवा नाम का उपयोग कर रहा है, जैसा कि /vdbsl14 में स्लैश द्वारा दर्शाया गया है . इसके बजाय SID का उपयोग करना (अर्थात उस URL में / से :) को बदलना काम करना चाहिए क्योंकि यह JDBC का उपयोग कर रहा है:
sqlcl username/example@sqldat.com:1521:vdbsl14
वैकल्पिक रूप से (और अधिमानतः, मेरी राय में) पता करें कि आपकी सेवा का नाम वास्तव में क्या है। यदि आपके पास डेटाबेस पर पर्याप्त विशेषाधिकार हैं तो आप show parameters service_names . कर सकते हैं SQL Devleoper से, या यदि आपके पास DBA के रूप में सर्वर तक पहुंच है, तो आप lsnrctl services कर सकते हैं , या यहां तक कि tnsnames.ora . देखें यदि कोई टीएनएस उपनाम परिभाषित है जो सेवा का नाम दिखाता है। (listener.ora मदद करने की संभावना नहीं है, लेकिन संकेत दे सकता है या यदि आप भाग्यशाली हैं तो एक डिफ़ॉल्ट सेवा नाम दिखाएं)।
आप उस सेवा नाम का उपयोग JDBC URL में /service_name . के रूप में कर सकते हैं ।
आप SQLcl (या SQL*Plus) से TNS उपनाम का भी उपयोग कर सकते हैं। आपके पास पहले से एक tnsnames.ora हो सकता है उपलब्ध; यदि नहीं, तो आप इसे अपने सर्वर से कॉपी करने में सक्षम हो सकते हैं, या अपना स्वयं का बना सकते हैं। यह SID या सेवा के नाम का उल्लेख कर सकता है।
आप एसक्यूएल * प्लस (एसक्यूएलसीएल के बारे में निश्चित नहीं) के लिए एक पूर्ण टीएनएस विवरण भी पास कर सकते हैं लेकिन यह थोड़ा अप्रिय है। यदि आपके पास tnsnames.ora नहीं है/चाहते हैं आप 'ईज़ी कनेक्ट' सिंटैक्स का उपयोग कर सकते हैं, जो वैसा ही है जैसा आप SQLcl के लिए उपयोग कर रहे हैं - लेकिन उसमें है सेवा का नाम होने के लिए, यह SIDs की अनुमति नहीं देता है।