Secondo Oracle, queste posizioni vengono cercate per tnsnames.ora
, risp. sqlnet.ora
:
- percorso corrente (associato all'applicazione client in esecuzione)
- Variabile d'ambiente
TNS_ADMIN
definito per la sessione - Variabile d'ambiente
TNS_ADMIN
definito per il sistema - Chiave del registro di Windows
HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN
(per 64 bit) o HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN
(per 32 bit) %ORACLE_HOME%\network\admin
Tuttavia, non sono sicuro che ogni applicazione/driver/versione segua questo elenco. Questo elenco è stato fornito da Oracle relativo alla versione 9i. Penso che lo gestirai per interrogare queste cartelle tramite VBScript.
Se ORACLE_HOME
non è impostato dalla variabile di ambiente, devi interrogare il registro HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME
(per 64 bit) o HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME
(per 32 bit)
Per ORACLE_HOME_NAME
devi accedere al tuo bin
Oracle cartella (che si trova tramite %PATH%
Variabile d'ambiente) e apri il file oracle.key
. Questo è un semplice file di testo contenente solo il ORACLE_HOME_NAME
valore, ad es. OraClient11g_home1 .
Tuttavia, in genere c'è solo una Oracle Home sotto HKLM\SOFTWARE\ORACLE
, quindi cercare e leggere il file oracle.key
potrebbe essere eccessivo.
Aggiorna
Quando eseguo un test sulla mia macchina (con Oracle Client 11.2) ottengo il seguente ordine:
- Variabile d'ambiente
TNS_ADMIN
HKLM\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
, risp.HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
-> Solo seTNS_ADMIN
La variabile d'ambiente non è impostata.%ORACLE_HOME%\network\admin
- Directory attuale (che può essere diversa dalla directory in cui si trova l'applicazione)
- Cartella in cui si trova la tua applicazione
Per un'analisi approfondita devi cercare tnsnames.ora
, sqlnet.ora
e ldap.ora
. Il nome del database Oracle può essere risolto attraverso ciascuno di essi, ovvero può essere stabilita una connessione anche quando tnsnames.ora
e sqlnet.ora
non esistono.