अपने स्वयं के tnsnames.ora को संशोधित किए बिना किसी अन्य होस्ट पर स्थित Oracle डेटाबेस से कनेक्ट करने के लिए sqlplus का उपयोग कैसे करें


80

मैं sqlplus का उपयोग करके किसी अन्य होस्ट पर स्थित oracle डेटाबेस से कनेक्ट करना चाहता हूं। इस पृष्ठ ने सुझाव दिया कि मेरे डेटाबेस पर कॉनसेक्ट करने के लिए मेरे tnsnames पर एक आइटम जोड़ना

local_SID =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL= TCP)(Host= hostname.network)(Port= 1521))
    (CONNECT_DATA = (SID = remote_SID))
  )

और फिर sqlplus में उस का उपयोग करें

sqlplus user/pass@local_SID

हालांकि, मेरी परिस्थितियों में स्थानीय tnsnames को संशोधित करना संभव नहीं है। क्या यह संभव है कि एक दूरस्थ डेटाबेस से कनेक्ट करने के लिए केवल tnnames को बदलने के बिना sqlplus तर्क का उपयोग करके? कुछ इस तरह

sqlplus user/pass@remote_SID@hostname.network ;( I know, this one is not valid)

1
इससे भी कम - sqlplus userid / पासवर्ड @ डेटाबेस

@ ग्लेनलॉन्ग - लेकिन आपके संस्करण में, databaseअभी भी एक टीएनएस उर्फ ​​है, जिसे अस्तित्व में है tnsnames.ora, इसलिए यह उसी तरह है जैसे लुई बचने की कोशिश कर रहा था?
एलेक्स पोले

जवाबों:


85
 sqlplus user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))

हो सकता है, और यह कमांड लाइन के वातावरण पर निर्भर हो सकता है जिसका आप उपयोग कर रहे हैं, आपको स्ट्रिंग को उद्धृत करने की आवश्यकता है, कुछ इस तरह

 sqlplus "user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))"

या

 sqlplus 'user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))'

35

आप इसके लिए आसान कनेक्ट का उपयोग कर सकते हैं :

sqlplus usr/pass@hostname.network/remote_service_name

अपनी मशीन पर आसान कनेक्ट को सक्षम करने के लिए , आपको इसे NAMES.DIRECTORY_PATH sqlnet.ora में जोड़ना होगा, जैसे:

NAMES.DIRECTORY_PATH=(EZCONNECT)

यदि आपका श्रोता गैर-डिफ़ॉल्ट पोर्ट उपयोग पर है ...@hostname.network:port/...

वास्तव में ऐसा लगता है कि आपको एक सेवा नाम की आपूर्ति करनी है, एसआईडी की नहीं; वे समान हो सकते हैं लेकिन यदि आपको सर्वर से प्राप्त करने की आवश्यकता नहीं होगी।


1
यदि सेवा का नाम होस्टनाम के समान है, तो कनेक्ट करते समय आपको सेवा नाम निर्दिष्ट करने की भी आवश्यकता नहीं है। (व्यावहारिक रूप से कोई भी ऐसा नहीं करता है, लेकिन यह जानना अच्छा है।)
ड्यूरेट

मृत लिंक .......
हार्वे

1
@ हार्वे - अद्यतन, धन्यवाद।
एलेक्स पूले

17

निर्देशिका में tnsnames.ora फ़ाइल की एक प्रतिलिपि बनाएँ, जिसे आप लिख सकते हैं, तदनुसार फ़ाइल को संशोधित करें, फिर उस निर्देशिका के स्थान पर TNS_ADMIN पर्यावरण चर सेट करें।

उदाहरण के लिए:

cp $ORACLE_HOME/network/admin/tnsnames.ora /tmp/tnsnames.ora
# edit the /tmp/tnsnames.ora file to add your entries

# Set the $TNS_ADMIN environment variable so that sqlplus knows where to look 
export TNS_ADMIN=/tmp

2
यह एक बहुत, बहुत बेहतर प्रतिक्रिया है
एंड्रयू स्लेज

यह दृष्टिकोण एक ऐसी प्रणाली के साथ काम करता है, जिसमें कोई sqlplus क्लाइंट के अलावा कोई भी oracle बुनियादी ढांचा स्थापित नहीं है। बस DB सर्वर से tnsnames.ora पर कॉपी करें, और फिल की प्रक्रिया का पालन करें।
रिले

3

यूनिक्स / लिनक्स सिस्टम पर आप सिस्टम स्तर प्रविष्टियों को ओवरराइड करने के लिए उपयोगकर्ता स्तर कॉन्फ़िगरेशन फ़ाइलों का उपयोग कर सकते हैं ।

सिस्टम-स्तरीय उपयोगकर्ता-स्तर 
कॉन्फ़िगरेशन फ़ाइल कॉन्फ़िगरेशन फ़ाइल
------------------ -------------------
sqlnet.ora $ HOME / .sqlnet.ora
tnsnames.ora $ HOME / .tnsnames.ora

सिस्टम-स्तरीय कॉन्फ़िगरेशन फ़ाइलें निर्देशिका में पाई जा सकती हैं $TNS_ADMIN। यदि चर TNS_ADMINसेट नहीं होता है, तो उन्हें निर्देशिका में खोजा जाता है $ORACLE_HOME/network/admin

उपयोगकर्ता-स्तरीय कॉन्फ़िगरेशन फ़ाइलें सिस्टम स्तर कॉन्फ़िगरेशन फ़ाइलों को संपूर्ण के रूप में TNS_ADMINप्रतिस्थापित नहीं करती हैं (जैसा कि निर्देशिका संपूर्ण $ORACLE_HOME/network/adminनिर्देशिका को स्थानापन्न करती है ), लेकिन वे सिस्टम-स्तरीय कॉन्फ़िगरेशन फ़ाइलों की प्रविष्टियों को जोड़ते या बदलते हैं। यदि कोई प्रविष्टि उपयोगकर्ता-स्तरीय कॉन्फ़िगरेशन फ़ाइल में मौजूद है, तो इसका उपयोग किया जाता है, यदि यह उपयोगकर्ता-स्तरीय कॉन्फ़िगरेशन फ़ाइल में मौजूद नहीं है, तो सिस्टम-स्तरीय कॉन्फ़िगरेशन फ़ाइल का उपयोग किया जाता है।

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