ओरेकल - मैं क्या टीएनएस नाम फ़ाइल का उपयोग कर रहा हूँ?

कभी-कभी मुझे ओरेकल कनेक्शन की समस्याएं मिलती हैं क्योंकि मैं यह नहीं समझ सकता कि कौन सा tnsnames.ora फ़ाइल मेरे डेटाबेस क्लाइंट का उपयोग कर रहा है।

इसे समझने का सबसे अच्छा तरीका क्या है? विभिन्न मंच समाधानों के लिए ++ खुश।

0
ro fr bn

10 उत्तर

लिनक्स के लिए:

$ strace sqlplus -L scott/[email protected] 2>&1| grep -i 'open.*tnsnames.ora'

ऐसा कुछ दिखाता है:

open("/opt/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora",O_RDONLY)=7

बदल रहा है

$ strace sqlplus -L scott/[email protected] 2>&1| grep -i 'tnsnames.ora'

असफल होने वाले सभी फ़ाइल पथ दिखाएंगे।

0
जोड़ा
@ अविंद्र गुलचरण, यह मेरा निष्कर्ष भी है। यही वह जगह है जहां हमने इसे रखा और कोई समस्या नहीं थी।
जोड़ा लेखक Mark Harrison, स्रोत
धन्यवाद, इस पर आधारित, ऐसा लगता है कि /etc/tnsnames.ora टीएनएस नामों के लिए एक विश्वसनीय, वैश्विक स्थान है।
जोड़ा लेखक Avindra Goolcharan, स्रोत

विंडोज के लिए: SysInternals से Filemon आपको दिखाएगा कि कौन सी फाइलों का उपयोग किया जा रहा है ।

अपने फ़िल्टर सेट करना याद रखें ताकि आप चैट फ़ाइल सिस्टम यातायात से अभिभूत न हों।

फ़िल्टर संवाद

Added: Filemon does not work with newer Windows versions, so you might have to use Process Monitor.

0
जोड़ा

क्या यह हमेशा "$ ORACLE_ HOME/network/admin/tnsnames.ora" नहीं होना चाहिए? फिर आप "echo $ oracle_ home" या * nix समकक्ष "कर सकते हैं।

@ पेटी होल्बर्टन आप पूरी तरह से सही हैं। जो मुझे याद दिलाता है, TWO_ TASK नामक कार्यों में एक और बंदर रिंच है

http://www.orafaq.com/wiki/TNS_ADMIN के अनुसार TNS_ADMIN एक पर्यावरण चर है जो निर्देशिका को इंगित करता है जहां SQL * नेट कॉन्फ़िगरेशन फ़ाइलें (जैसे sqlnet.ora और tnsnames.ora) स्थित हैं।

0
जोड़ा
असल में, नहीं, आप इस स्थान को नहीं मान सकते हैं। एजेंट घर और ग्राहक घर है, बस नाम 2 के लिए, जिसका अपना नेटवर्क/व्यवस्थापक निर्देशिका है। आपके द्वारा प्राप्त उत्तर इस बात पर निर्भर करता है कि आप किस निष्पादन योग्य चल रहे हैं।
जोड़ा लेखक DCookie, स्रोत

ओरेकल एक उपयोगिता प्रदान करता है जिसे tnsping कहा जाता है:

R:\>tnsping someconnection

TNS Ping Utility for 32-bit Windows: Version 9.0.1.3.1 - Production on 27-AUG-20
08 10:38:07

Copyright (c) 1997 Oracle Corporation.  All rights reserved.

Used parameter files:
C:\Oracle92\network\ADMIN\sqlnet.ora
C:\Oracle92\network\ADMIN\tnsnames.ora

TNS-03505: Failed to resolve name

R:\>


R:\>tnsping entpr01

TNS Ping Utility for 32-bit Windows: Version 9.0.1.3.1 - Production on 27-AUG-20
08 10:39:22

Copyright (c) 1997 Oracle Corporation.  All rights reserved.

Used parameter files:
C:\Oracle92\network\ADMIN\sqlnet.ora
C:\Oracle92\network\ADMIN\tnsnames.ora

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = **)
 (PROTOCOL = TCP) (Host = ****) (Port = 1521))) (CONNECT_DATA = (SID = ENTPR0
1)))
OK (40 msec)

R:\>

यह दिखाना चाहिए कि आप किस फाइल का उपयोग कर रहे हैं। उपयोगिता ओरेकल bin निर्देशिका में बैठती है।

0
जोड़ा

मेरी विकास मशीन पर मेरे पास ओरेकल क्लाइंट सॉफ्टवेयर के तीन अलग-अलग संस्करण हैं। मैं उनमें से एक में tnsnames.ora फ़ाइल का प्रबंधन करता हूं। दूसरे दो में, मैंने tnsnames.ora फ़ाइल में प्रवेश किया है:

ifile=path_to_tnsnames.ora_file/tnsnames.ora

इस तरह, अगर किसी कारण से किसी क्लाइंट द्वारा गलत tnsnames.ora फ़ाइल का उपयोग किया जाता है, तो यह हमेशा अद्यतित संस्करण पर समाप्त हो जाएगा।

0
जोड़ा

कोड्सलेव पूछता है, "हमेशा यह नहीं होना चाहिए" $ ORACLE_ HOME/network/admin/tnsnames.ora "? जवाब नहीं है, ऐसा नहीं है। उसी मशीन पर tnsping के इन दो आमंत्रणों पर विचार करें:

C:\Documents and Settings\me>D:\Oracle\10.2.0_DB\BIN\tnsping orcl

TNS Ping Utility for 32-bit Windows: Version 10.2.0.4.0 - Production on 09-OCT-2
008 14:30:12

Copyright (c) 1997,  2007, Oracle.  All rights reserved.

Used parameter files:
D:\Oracle\10.2.0_DB\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxx
)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))

OK (40 msec)

C:\Documents and Settings\me>tnsping orcl

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 09-OCT-2
008 14:30:21

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

Used parameter files:
D:\oracle\10.2.0_Client\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = XXXX)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))
OK (20 msec)

C:\Documents and Settings\me>

दो अलग-अलग पैरामीटर फ़ाइल स्थानों पर ध्यान दें, जो इस पर निर्भर हैं कि आप किस निष्पादन योग्य निष्पादन योग्य हैं (और शायद यह कहां से चल रहा है)। TNSNames- आधारित ऑरैक नेटवर्किंग के लिए, TNS_ADMIN वैरिएबल का उपयोग करने का एकमात्र तरीका यह सुनिश्चित करने का एकमात्र तरीका है कि आपको लगातार tnsnames.ora फ़ाइल मिल रही है। (नोट: विंडोज-केंद्रित उत्तर)

0
जोड़ा
क्या आप सिर्फ कई ऑरैकल घरों से प्यार नहीं करते हैं?
जोड़ा लेखक stjohnroe, स्रोत

आप Windows, खुले regedit उपयोग कर रहे हैं और पर नेविगेट मेरे HKEY स्थानीय मशीन/सॉफ्टवेयर/Oracle/KEY_OraClient10_home1 जहाँ <�कोड: एक और जगह है जहाँ टीएनएस स्थान संग्रहीत किया जाता है नहीं है > KEY_OraClient10_home1 अपने ओरेकल घर है। अगर वहाँ एक स्ट्रिंग प्रविष्टि TNS_ADMIN कहा जाता है, तो उस प्रविष्टि के मान टीएनएस फ़ाइल कि Oracle आपके कंप्यूटर पर उपयोग कर रहा है को इंगित करेंगे।

0
जोड़ा

डेटाबेस से कनेक्ट होने वाली प्रक्रिया के पथ पर्यावरण चर को जांचने का सबसे आसान तरीका संभवतः है। सबसे अधिक संभावना है कि tnsnames.ora फ़ाइल पथ में पहली ओरेकल बिन निर्देशिका .. \ network \ admin में है। रजिस्ट्री में TNS_ADMIN पर्यावरण परिवर्तनीय या मान (वर्तमान ओरेकल घर के लिए) इसे ओवरराइड कर सकता है।

दूसरों द्वारा सुझाए गए फाइलमोन का उपयोग करना भी चाल करेगा।

0
जोड़ा

strace sqlplus -L scott/[email protected] helps to find .tnsnames.ora file on /home/oracle to find the file it takes instead of $ORACLE_HOME/network/admin/tnsnames.ora file. Thanks for the posting.

0
जोड़ा

Not direct answer to your question, but I've been quite frustrated myself trying find and update all of the tnsnames files, as I had several oracle installs: Client, BI tools, OWB, etc, each of which had its own oracle home. I ended up creating a utility called TNSNamesSync that will update all of the tnsnames in all of the oracle homes. It's under the MIT license, free to use here https://github.com/artybug/TNSNamesSync/releases

The docs are here: https://github.com/artchik/TNSNamesSync/blob/master/README.md

यह केवल विंडोज़ के लिए है, हालांकि।

0
जोड़ा