Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

identificando a localização dos tnsnames relevantes e ecoando para o console


De acordo com a Oracle, esses locais são pesquisados ​​por tnsnames.ora , resp. sqlnet.ora :
  1. caminho atual (associado ao aplicativo cliente em execução)
  2. Variável de ambiente TNS_ADMIN definido para a sessão
  3. Variável de ambiente TNS_ADMIN definido para o sistema
  4. Chave do Registro do Windows HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN (para 64 bits) ou HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN (para 32 bits)
  5. %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:
  1. Variável de ambiente TNS_ADMIN
  2. HKLM\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN , resp. HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN -> Somente se TNS_ADMIN A variável de ambiente não está definida.
  3. %ORACLE_HOME%\network\admin
  4. Diretório atual (que pode ser diferente do diretório em que seu aplicativo está localizado)
  5. 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.