Selon Oracle, ces emplacements sont recherchés pour tnsnames.ora
, rép. sqlnet.ora
:
- chemin actuel (associé à l'application cliente en cours d'exécution)
- Variable d'environnement
TNS_ADMIN
défini pour la session - Variable d'environnement
TNS_ADMIN
défini pour le système - Clé de registre Windows
HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN
(pour 64 bits) ouHKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN
(pour 32 bits) %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 :
- Variable d'environnement
TNS_ADMIN
HKLM\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
, rép.HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
-> Seulement siTNS_ADMIN
La variable d'environnement n'est pas définie.%ORACLE_HOME%\network\admin
- Répertoire actuel (qui peut être différent du répertoire où se trouve votre application)
- 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.