Secondo Oracle, queste posizioni vengono cercate per tnsnames.ora , risp. sqlnet.ora e ldap.ora :
- File Oracle Net nella directory di lavoro attuale (PWD/CWD)
TNS_ADMINdefinito in sessione o da script definito dall'utenteTNS_ADMINdefinita come una variabile d'ambiente globaleTNS_ADMINdefinito nel registro- File Oracle Net in
%ORACLE_HOME/network|net80\admin(Posizione predefinita Oracle)
Tuttavia, non sono sicuro che ogni applicazione/driver segua questo elenco. Ho ottenuto questo elenco da Oracle Document 111942.1 riferito a Oracle 9i, quindi potrebbe essere obsoleto.
Nella Guida dell'amministratore di Database Net Services l'ordine è
TNS_ADMINdefinito dalla variabile d'ambienteTNS_ADMINdefinito nel registro (seTNS_ADMINla variabile di ambiente non è presente)%ORACLE_HOME%/network/admindirectory (seTNS_ADMINla variabile di ambiente non è presente)
Consiglierei di definire una variabile di ambiente per TNS_ADMIN e usa un solo file tnsnames.ora. Per essere al sicuro, controlla anche i valori del tuo registro.
Se i tuoi file non situato in %ORACLE_HOME%\network\admin , ti consiglio di creare un collegamento simbolico per questo - solo per essere molto lato sicuro, ad es. mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin
Un'altra nota, non devi "giocare" con il tuo file tnsnames.ora. Con Process Monitor di Microsoft Sysinternals puoi monitorare ogni accesso ai file, ad es. il filtro sarebbe Path contains tnsnames
Aggiorna
Quando eseguo un test sulla mia macchina, ottengo il seguente ordine:
- Variabile d'ambiente
TNS_ADMIN - Chiave di registro
HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN -
Chiave di registro
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN, risp.HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN-> Solo se
TNS_ADMINLa variabile di 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
Aggiornamento 2
Ovviamente non esiste una ricerca di correzione, varia per diversi provider/driver. Forse dipende anche dalla versione di Oracle.
Ad esempio, il Server HTTP Oracle legge TNS_ADMIN impostazione da opmn.xml file di configurazione.
Un altro esempio, per il driver gestito ODP.NET (Oracle.ManagedDataAccess) beta versione, ho trovato questo ordine in Oracle Managed e TNS Names :
- alias origine dati nella sezione 'dataSources' in
<oracle.manageddataaccess.client>sezione nel file di configurazione .NET (ad esempiomachine.config,web.config,user.config). - alias origine dati in
tnsnames.orafile nella posizione specificata daTNS_ADMINnel file di configurazione .NET. - alias origine dati in
tnsnames.orafile presente nella stessa directory di.exe. - alias origine dati in
tnsnames.orafile presente in%TNS_ADMIN%
(dove%TNS_ADMIN%è un'impostazione di una variabile di ambiente). - alias origine dati in
tnsnames.orafile presente in%ORACLE_HOME%\network\admin
(dove%ORACLE_HOME%è un'impostazione di variabile d'ambiente).
Nella documentazione ufficiale (12c Release 4 (12.1.0.2.4)) si dice:
- alias origine dati in
dataSourcessezione in<oracle.manageddataaccess.client>sezione nel file di configurazione .NET (ad esempiomachine.config,web.config,user.config). - alias origine dati in
tnsnames.orafile nella posizione specificata daTNS_ADMINnel file di configurazione .NET. Le posizioni possono essere costituite da percorsi di directory assoluti o relativi. - alias origine dati in
tnsnames.orafile presente nella stessa directory di.exe.
Tuttavia, sulla base di alcuni test che ho fatto con ODP.NET Managed Driver (4.121.2.0) ci vuole %ORACLE_HOME%\network\admin e TNS_ADMIN In considerazione la variabile d'ambiente. Si blocca come se la documentazione non fosse corretta al 100%.