Oracle
 sql >> Base de données >  >> RDS >> Oracle

identifier l'emplacement des tnsnames pertinents et faire écho à la console

Selon Oracle, ces emplacements sont recherchés pour tnsnames.ora , rép. sqlnet.ora :

  1. chemin actuel (associé à l'application cliente en cours d'exécution)
  2. Variable d'environnement TNS_ADMIN défini pour la session
  3. Variable d'environnement TNS_ADMIN défini pour le système
  4. Clé de registre Windows HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN (pour 64 bits) ou HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN (pour 32 bits)
  5. %ORACLE_HOME%\network\admin

Cependant, je ne sais pas si chaque application/pilote/version suit cette liste. Cette liste a été fournie par Oracle liée à la version 9i. Je pense que vous y parviendrez pour interroger ces dossiers par VBScript.

Si ORACLE_HOME n'est pas défini par la variable d'environnement, vous devez interroger le registre HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME (pour 64 bits) ou HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME (pour 32 bits)

Pour ORACLE_HOME_NAME vous devez accéder à votre Oracle bin dossier (à trouver via %PATH% Variable d'environnement) et ouvrez le fichier oracle.key . Il s'agit d'un simple fichier texte contenant uniquement le ORACLE_HOME_NAME valeur, par ex. OraClient11g_home1 .

Cependant, il n'y a généralement qu'un seul Oracle Home sous HKLM\SOFTWARE\ORACLE , donc recherche et lecture du fichier oracle.key peut-être exagéré.

Mettre à jour

Lorsque j'exécute un test sur ma machine (avec Oracle Client 11.2), j'obtiens la commande suivante :

  1. Variable d'environnement TNS_ADMIN
  2. HKLM\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN , rép. HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN -> Seulement si TNS_ADMIN La variable d'environnement n'est pas définie.
  3. %ORACLE_HOME%\network\admin
  4. Répertoire actuel (qui peut être différent du répertoire où se trouve votre application)
  5. Dossier où se trouve votre application

Pour une analyse approfondie, vous devez rechercher tnsnames.ora , sqlnet.ora et ldap.ora . Le nom de la base de données Oracle peut être résolu par chacun d'eux, c'est-à-dire qu'une connexion peut être établie même lorsque tnsnames.ora et sqlnet.ora n'existent pas.