Според Oracle тези местоположения се търсят за tnsnames.ora
, респ. sqlnet.ora
и ldap.ora
:
- Oracle Net файлове в настоящата работна директория (PWD/CWD)
TNS_ADMIN
дефинирани сесионно или чрез дефиниран от потребителя скриптTNS_ADMIN
дефиниран като глобална променлива на средатаTNS_ADMIN
дефинирани в регистъра- Oracle Net файлове в
%ORACLE_HOME/network|net80\admin
(Местоположение по подразбиране на Oracle)
Не съм сигурен обаче дали всяко приложение/драйвер следва този списък. Получих този списък от Oracle Document 111942.1, отнасящ се до Oracle 9i, така че може да е остарял.
В Ръководството на администратора на Database Net Services поръчката е
TNS_ADMIN
дефиниран от променлива на средатаTNS_ADMIN
дефиниран в системния регистър (акоTNS_ADMIN
не присъства променлива на средата)%ORACLE_HOME%/network/admin
директория (акоTNS_ADMIN
не присъства променлива на средата)
Бих препоръчал да дефинирате променлива на средата за TNS_ADMIN
и използвайте само един файл tnsnames.ora. За да сте в безопасност, проверете и стойностите на вашия регистър.
Ако вашите файлове са не намира се в %ORACLE_HOME%\network\admin
, препоръчвам да създадете символична връзка за него - само за да бъде на най безопасна страна, напр. mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin
Друга забележка, не е нужно да "играете" с вашия файл tnsnames.ora. С Process Monitor от Microsoft Sysinternals можете да наблюдавате всеки достъп до файл, т.е. филтърът ще бъде Path contains tnsnames
Актуализиране
Когато стартирам тест на моята машина, получавам следния ред:
- Променлива на средата
TNS_ADMIN
- Ключ на регистъра
HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
-
Ключ на системния регистър
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
, респ.HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
-> Само ако
TNS_ADMIN
Променливата на средата не е зададена. %ORACLE_HOME%\network\admin
- Текуща директория (която може да е различна от директорията, в която се намира приложението ви)
- Папка, в която се намира приложението ви
Актуализация 2
Очевидно няма търсене на корекция, варира за различните доставчици/драйвери. Може би зависи и от версията на Oracle.
Например HTTP сървърът на Oracle чете TNS_ADMIN
настройка от opmn.xml
конфигурационен файл.
Друг пример за ODP.NET управляван драйвер (Oracle.ManagedDataAccess) бета версия, намерих тази поръчка в Oracle Managed и TNS Names :
- псевдоним на източника на данни в секцията „dataSources“ под
<oracle.manageddataaccess.client>
раздел в конфигурационния файл .NET (т.е.machine.config
,web.config
,user.config
). - псевдоним на източника на данни в
tnsnames.ora
файл на местоположението, посочено отTNS_ADMIN
в конфигурационния файл .NET. - псевдоним на източника на данни в
tnsnames.ora
файл, намиращ се в същата директория като.exe
. - псевдоним на източника на данни в
tnsnames.ora
файл присъства в%TNS_ADMIN%
(където%TNS_ADMIN%
е настройка за променлива на средата). - псевдоним на източника на данни в
tnsnames.ora
файл присъства в%ORACLE_HOME%\network\admin
(където%ORACLE_HOME%
е настройка за променлива на средата).
В официалната документация (12c издание 4 (12.1.0.2.4)) пише:
- псевдоним на източника на данни в
dataSources
раздел под<oracle.manageddataaccess.client>
раздел в конфигурационния файл .NET (т.е.machine.config
,web.config
,user.config
). - псевдоним на източника на данни в
tnsnames.ora
файл на местоположението, посочено отTNS_ADMIN
в .NET конфигурационния файл. Местоположенията могат да се състоят или от абсолютни, или от относителни пътища до директория. - псевдоним на източника на данни в
tnsnames.ora
файл, намиращ се в същата директория като.exe
.
Въпреки това, въз основа на някои тестове, които направих с ODP.NET Managed Driver (4.121.2.0), отнема %ORACLE_HOME%\network\admin
и TNS_ADMIN
Отчитане на променливата на околната среда. Бравите като документацията не са 100% правилни.