De acordo com a Oracle, esses locais são pesquisados por
tnsnames.ora , resp. sqlnet.ora e ldap.ora :- Arquivos Oracle Net no diretório de trabalho atual (PWD/CWD)
TNS_ADMINdefinido por sessão ou por script definido pelo usuárioTNS_ADMINdefinido como uma variável de ambiente globalTNS_ADMINdefinido no registro- Arquivos Oracle Net em
%ORACLE_HOME/network|net80\admin(local padrão do Oracle)
No entanto, não tenho certeza se cada aplicativo/driver segue esta lista. Eu peguei esta lista do Oracle Document 111942.1 referente ao Oracle 9i, então pode estar desatualizado.
No Guia do Administrador do Database Net Services, a ordem é
TNS_ADMINdefinido pela variável de ambienteTNS_ADMINdefinido no registro (seTNS_ADMINvariável de ambiente não está presente)%ORACLE_HOME%/network/admindiretório (seTNS_ADMINvariável de ambiente não está presente)
Eu recomendaria definir uma variável de ambiente para
TNS_ADMIN e use apenas um arquivo tnsnames.ora. Para estar no lado seguro, verifique também seus valores de registro. Se seus arquivos não localizado em
%ORACLE_HOME%\network\admin , recomendo criar um link simbólico para ele - apenas para estar no muito lado seguro, por ex. mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin Outra nota, você não precisa "brincar" com seu arquivo tnsnames.ora. Com o Process Monitor da Microsoft Sysinternals você pode monitorar cada acesso de arquivo, ou seja, o filtro seria
Path contains tnsnames Atualizar
Quando executo um teste na minha máquina, recebo a seguinte ordem:
- Variável de ambiente
TNS_ADMIN - Chave de registro
HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN -
Chave do RegistroHKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN, resp.HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
-> Somente seTNS_ADMINA variável de ambiente não está definida.
%ORACLE_HOME%\network\admin- Diretório atual (que pode ser diferente do diretório em que seu aplicativo está localizado)
- Pasta onde seu aplicativo está localizado
Atualização 2
Obviamente não há busca de correção, varia para diferentes provedores/drivers. Talvez também dependa da versão do Oracle.
Por exemplo, o Servidor HTTP Oracle lê
TNS_ADMIN configuração de opmn.xml arquivo de configuração. Outro exemplo, para o driver gerenciado ODP.NET (Oracle.ManagedDataAccess) beta versão, encontrei este pedido em Oracle Managed and TNS Names :
- alias da fonte de dados na seção 'dataSources' em
<oracle.manageddataaccess.client>seção no arquivo de configuração .NET (ou seja,machine.config,web.config,user.config). - alias da fonte de dados no
tnsnames.oraarquivo no local especificado porTNS_ADMINno arquivo de configuração .NET. - alias da fonte de dados no
tnsnames.oraarquivo presente no mesmo diretório que o.exe. - alias da fonte de dados no
tnsnames.oraarquivo presente em%TNS_ADMIN%
(onde%TNS_ADMIN%é uma configuração de variável de ambiente). - alias da fonte de dados no
tnsnames.oraarquivo presente em%ORACLE_HOME%\network\admin
(onde%ORACLE_HOME%é uma configuração de variável de ambiente).
Na documentação oficial (12c Release 4 (12.1.0.2.4)) diz:
- alias da fonte de dados em
dataSourcesseção em<oracle.manageddataaccess.client>seção no arquivo de configuração .NET (ou seja,machine.config,web.config,user.config). - alias da fonte de dados no
tnsnames.oraarquivo no local especificado porTNS_ADMINno arquivo de configuração .NET. Os locais podem consistir em caminhos de diretório absolutos ou relativos. - alias da fonte de dados no
tnsnames.oraarquivo presente no mesmo diretório que o.exe.
No entanto, com base em alguns testes que fiz com o driver gerenciado ODP.NET (4.121.2.0), leva
%ORACLE_HOME%\network\admin e TNS_ADMIN Variável de ambiente em consideração. Bloqueios como a documentação não está 100% correto.