Oracle-jakiego pliku nazw TNS używam?

Czasami mam problemy z połączeniem Oracle, ponieważ nie mogę dowiedzieć się, które nazwy tnsnames.plik ora używany przez Klienta bazy danych.

Jaki jest najlepszy sposób, aby to rozgryźć? ++zadowolony z różnych rozwiązań platformowych.

Author: Mark Harrison, 2008-08-14

11 answers

Oracle udostępnia narzędzie o nazwie 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:\>

To powinno pokazać, jakiego pliku używasz. Narzędzie znajduje się w katalogu Oracle bin.

 72
Author: stjohnroe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-12 17:55:00

Dla Linuksa:

$ strace sqlplus -L scott/tiger@orcl 2>&1| grep -i 'open.*tnsnames.ora'

Pokazuje coś takiego:

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

Zmiana na

$ strace sqlplus -L scott/tiger@orcl 2>&1| grep -i 'tnsnames.ora'

Wyświetli wszystkie ścieżki plików, które nie działają.

 16
Author: Mark Harrison,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-28 06:36:59

Jeśli używasz systemu Windows, otwórz regedit i przejdź do My HKEY Local Machine/Software/ORACLE/KEY_OraClient10_home1, Gdzie KEY_OraClient10_home1 jest twoim domem Oracle. Jeśli istnieje wpis tekstowy o nazwie TNS_ADMIN, to jego wartość będzie wskazywać na plik TNS używany przez Oracle na twoim komputerze.

 5
Author: Trumpi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-30 09:12:33

Dla Windows: Filemon z SysInternals pokaże, jakie pliki są dostępne.

Pamiętaj, aby ustawić filtry, aby nie przytłoczył Cię ruch w systemie plików.

Okno Filtrowania

Dodano: Filemon nie działa z nowszymi wersjami systemu Windows, więc być może będziesz musiał użyć Process Monitor .

 4
Author: Ishmaeel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-30 09:17:57

Na mojej maszynie programistycznej mam trzy różne wersje oprogramowania klienckiego Oracle. Zarządzam plikiem tnsnames.ora w jednym z nich. W pozostałych dwóch wpisałem plik tnsnames.ora:

ifile=path_to_tnsnames.ora_file/tnsnames.ora

W ten sposób, jeśli z jakiegoś powodu niewłaściwy plik tnsnames.ora zostanie użyty przez Klienta, zawsze skończy się na aktualnej wersji.

 4
Author: Rene,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-12 18:02:38

Codeslave pyta "Shouldn' t it always be " $ORACLE_ HOME/network/admin / tnsnames.ora"? Odpowiedź brzmi: Nie, Nie jest. rozważ te dwa wywołania tnspingu na tej samej maszynie:

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>

Zwróć uwagę na dwa różne lokalizacje plików parametrów, które zależą od tego, z jakiego programu wykonywalnego tnsping korzystasz (i być może skąd jest uruchamiany). W przypadku sieci oracle opartych na sieci tnsnames używanie zmiennej TNS_ADMIN jest jedynym sposobem zapewnienia spójnego działania sieci tnsnames.plik ora. (Uwaga: Windows-centric answer)

 3
Author: DCookie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-09 20:45:48

Domyślnie, tnsnames.ora znajduje się w katalogu $ORACLE_HOME/network/admin w systemach operacyjnych UNIX oraz w katalogu ORACLE_HOME\network\admin w systemach operacyjnych Windows. tnsnames.ora może być również przechowywany w następujących miejscach:

Katalog określony przez zmienną środowiskową TNS_ADMIN (lub wartość rejestru)

W systemach operacyjnych UNIX, globalny katalog konfiguracji. Na przykład w systemie operacyjnym Solaris katalog ten jest / var/opt / oracle

Jeśli masz wiele ORACLE_HOMES, pamiętaj, którego z nich używasz, jako lokalizacji tnsnames.plik ora może się różnić od jednego ORACLE_HOME do następnego.

Dla osoby, która wspomniała o zmiennej środowiskowej TWO_TASK, która jest używana do ustawienia domyślnej nazwy usługi bazy danych, z którą ma się połączyć (która może być bazą danych na innym serwerze). Nazwa usługi, na którą ustawiłeś TWO_TASK, jest następnie sprawdzana w nazwach tnsnames.plik ora po połączeniu.

 2
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-31 23:05:25

Nie powinno być zawsze " $ORACLE_ HOME/network/admin / tnsnames.ora"? Następnie możesz po prostu zrobić "echo $oracle_ home" lub odpowiednik * nix.

@Pete Holberton Masz całkowitą rację. Co mi przypomina, w pracach jest jeszcze jeden klucz do małp o nazwie TWO_ TASK

Według http://www.orafaq.com/wiki/TNS_ADMIN
TNS_ADMIN jest zmienną środowiskową, która wskazuje na katalog, w którym znajdują się pliki konfiguracyjne SQL*Net (takie jak sqlnet.ora i tnsnames.ora) znajdują się

 1
Author: BIBD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-28 20:04:29

strace sqlplus -L scott/tiger@orcl pomaga znaleźć plik .tnsnames.ora na /home/oracle, aby znaleźć plik, który zajmuje zamiast pliku $ORACLE_HOME/network/admin/tnsnames.ora. Dzięki za wpis.

 1
Author: sri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-11 15:55:38

Najprostszym sposobem jest prawdopodobnie sprawdzenie zmiennej środowiskowej PATH procesu łączącego się z bazą danych. Najprawdopodobniej tnsnames.plik ora znajduje się w pierwszym katalogu Bin Oracle W path ..\ network\admin. Zmienna środowiskowa TNS_ADMIN lub wartość w rejestrze (dla bieżącego domu Oracle) może to zastąpić.

Używanie Filemona, jak sugerują inni, również załatwi sprawę.

 0
Author: stili,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-04 21:46:45

Nie odpowiadam bezpośrednio na twoje pytanie, ale byłem dość sfrustrowany, próbując znaleźć i zaktualizować wszystkie pliki tnsnames, ponieważ miałem kilka instalacji oracle: Klient, narzędzia BI, OWB itp., z których każda miała swój własny dom oracle. Skończyło się na stworzeniu narzędzia o nazwie TNSNamesSync, które zaktualizuje wszystkie nazwy tnsnames we wszystkich domach oracle. Jest na licencji MIT, do użytku tutaj https://github.com/artybug/TNSNamesSync/releases

Dokumenty są proszę.: https://github.com/artchik/TNSNamesSync/blob/master/README.md

To jest tylko dla Windows, choć.

 0
Author: artybug,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-10 13:02:16