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_ADMIN
definido por sessão ou por script definido pelo usuárioTNS_ADMIN
definido como uma variável de ambiente globalTNS_ADMIN
definido 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_ADMIN
definido pela variável de ambienteTNS_ADMIN
definido no registro (seTNS_ADMIN
variável de ambiente não está presente)%ORACLE_HOME%/network/admin
diretório (seTNS_ADMIN
variá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_ADMIN
A 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.ora
arquivo no local especificado porTNS_ADMIN
no arquivo de configuração .NET. - alias da fonte de dados no
tnsnames.ora
arquivo presente no mesmo diretório que o.exe
. - alias da fonte de dados no
tnsnames.ora
arquivo presente em%TNS_ADMIN%
(onde%TNS_ADMIN%
é uma configuração de variável de ambiente). - alias da fonte de dados no
tnsnames.ora
arquivo 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
dataSources
seçã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.ora
arquivo no local especificado porTNS_ADMIN
no arquivo de configuração .NET. Os locais podem consistir em caminhos de diretório absolutos ou relativos. - alias da fonte de dados no
tnsnames.ora
arquivo 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.