Oracle - Ce fișier de nume TNS folosesc?

Uneori, am probleme de conexiune Oracle, deoarece nu pot să îmi dau seama ce tnsnames.ora fișierul meu client de bază de date utilizează.

Care este cel mai bun mod de a face acest lucru afară? ++ fericit pentru diferite soluții de platformă.

0
fr hi bn

10 răspunsuri

Pentru linux:

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

arată ceva de genul:

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

Schimbarea la

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

va afișa toate căile de fișiere care nu reușesc.

0
adăugat
@AvindraGoolcharan, asta este și concluzia mea. Aici am pus-o și nu am avut probleme.
adăugat autor Mark Harrison, sursa
Mulțumim, pe baza acestui fapt, se pare că /etc/tnsnames.ora este o locație fiabilă, globală pentru numele tns.
adăugat autor Avindra Goolcharan, sursa

Pentru Windows: Filemon de la SysInternals vă va arăta ce fișiere sunt accesate .

Amintiți-vă să setați filtrele astfel încât să nu vă coplesiți de traficul de fișiere de chat.

Dialogul filtrului

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

0
adăugat

Nu ar trebui să fie întotdeauna "$ ORACLE_ HOME/network/admin/tnsnames.ora"? Apoi puteți să faceți doar "echo $ oracle_ home" sau echivalentul * nix.

@Pete Holberton Ești complet corect. Ceea ce imi aminteste, este o alta cheia de maimuta in lucrarile numite TWO_GAS

În conformitate cu http://www.orafaq.com/wiki/TNS_ADMIN
TNS_ADMIN este o variabilă de mediu care indică directorul unde sunt localizate fișierele de configurare SQL * Net (cum ar fi sqlnet.ora și tnsnames.ora).

0
adăugat
De fapt, nu, nu poți asuma această locație. Există agentul acasă și clientul acasă, doar pentru a numi 2, care au propriul director de rețea/admin. Răspunsul pe care îl obțineți depinde de executivul pe care îl executați.
adăugat autor DCookie, sursa

Oracle oferă o utilitate numită 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:\>

Acest lucru ar trebui să arate ce fișier utilizați. Utilitatea se află în directorul Oracle bin .

0
adăugat

Pe mașina mea de dezvoltare am trei versiuni diferite ale software-ului client Oracle. Gestionez fișierul tnsnames.ora în unul dintre ele. În celelalte două, am introdus în fișierul tnsnames.ora :

ifile=path_to_tnsnames.ora_file/tnsnames.ora

În acest fel, dacă dintr-un anumit motiv un fișier tnsnames.ora greșit este utilizat de un client, acesta va ajunge întotdeauna la versiunea actualizată.

0
adăugat

Codeslave întreabă "Nu ar trebui să fie întotdeauna" $ ORACLE_ HOME/network/admin/tnsnames.ora "? Răspunsul este nu, nu este.Vă rugăm să luați în considerare aceste două invocări de tnsping pe aceeași mașină:

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>

Rețineți cele două locații diferite ale fișierelor parametrilor, care depind de execuția executată de tnsping pe care o executați (și poate de unde se execută). Pentru o rețea de tip oracle bazată pe tnsnames, folosirea variabilei TNS_ADMIN este singura modalitate de a vă asigura că primiți un fișier consistent tnsnames.ora. (NOTĂ: răspunsul centrat pe Windows)

0
adăugat
Nu vă placeți prea multe case de oracol?
adăugat autor stjohnroe, sursa

Există un alt loc unde este stocată locația TNS: Dacă utilizați Windows, deschideți regedit și navigați la My HKEY Local Machine/Software/ORACLE/KEY_OraClient10_home1 > KEY_OraClient10_home1 este casa ta Oracle. Dacă există o intrare de șir numită TNS_ADMIN , valoarea acelei intrări va indica fișierul TNS pe care Oracle îl utilizează pe computer.

0
adăugat

Cea mai ușoară cale este probabil să verificați variabila de mediu PATH a procesului care se conectează la baza de date. Cel mai probabil, fișierul tnsnames.ora se află în primul director Oracle bin în calea .. \ network \ admin. Variabila de mediu TNS_ADMIN sau valoarea în registru (pentru casa curentă Oracle) poate suprascrie acest lucru.

Folosirea fișierului, așa cum a sugerat și alții, va face și truc.

0
adăugat

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
adăugat

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

Aceasta este doar pentru Windows, totuși.

0
adăugat