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.
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
.
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ą.
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.
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.
Dodano: Filemon nie działa z nowszymi wersjami systemu Windows, więc być może będziesz musiał użyć Process Monitor .
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.
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)
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.
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ę
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.
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ę.
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ć.
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