De acordo com a Oracle, esses locais são pesquisados por
tnsnames.ora
, resp. sqlnet.ora
:- caminho atual (associado ao aplicativo cliente em execução)
- Variável de ambiente
TNS_ADMIN
definido para a sessão - Variável de ambiente
TNS_ADMIN
definido para o sistema - Chave do Registro do Windows
HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN
(para 64 bits) ouHKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN
(para 32 bits) %ORACLE_HOME%\network\admin
No entanto, não tenho certeza se cada aplicativo/driver/versão segue esta lista. Esta lista foi fornecida pela Oracle relacionada à versão 9i. Acho que você vai conseguir consultar essas pastas pelo VBScript.
Se
ORACLE_HOME
não é definido pela variável de ambiente, você deve consultar o registro HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME
(para 64 bits) ou HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME
(para 32 bits) Para
ORACLE_HOME_NAME
você tem que navegar para o seu Oracle bin
pasta (a ser encontrada através de %PATH%
variável de ambiente) e abra o arquivo oracle.key
. Este é um arquivo de texto simples contendo apenas o ORACLE_HOME_NAME
valor, por exemplo OraClient11g_home1 . No entanto, normalmente há apenas um Oracle Home abaixo de
HKLM\SOFTWARE\ORACLE
, procurando e lendo o arquivo oracle.key
pode ser um exagero. Atualizar
Quando executo um teste em minha máquina (com Oracle Client 11.2) recebo a seguinte ordem:
- Variável de ambiente
TNS_ADMIN
HKLM\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
, resp.HKLM\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
Para uma análise profunda, você deve procurar por
tnsnames.ora
, sqlnet.ora
e ldap.ora
. O nome do banco de dados Oracle pode ser resolvido através de cada um deles, ou seja, uma conexão pode ser estabelecida mesmo quando tnsnames.ora
e sqlnet.ora
não existe.