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_ADMIN
definito in sessione o da script definito dall'utenteTNS_ADMIN
definita come una variabile d'ambiente globaleTNS_ADMIN
definito 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_ADMIN
definito dalla variabile d'ambienteTNS_ADMIN
definito nel registro (seTNS_ADMIN
la variabile di ambiente non è presente)%ORACLE_HOME%/network/admin
directory (seTNS_ADMIN
la 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_ADMIN
La 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.ora
file nella posizione specificata daTNS_ADMIN
nel file di configurazione .NET. - alias origine dati in
tnsnames.ora
file presente nella stessa directory di.exe
. - alias origine dati in
tnsnames.ora
file presente in%TNS_ADMIN%
(dove%TNS_ADMIN%
è un'impostazione di una variabile di ambiente). - alias origine dati in
tnsnames.ora
file 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
dataSources
sezione in<oracle.manageddataaccess.client>
sezione nel file di configurazione .NET (ad esempiomachine.config
,web.config
,user.config
). - alias origine dati in
tnsnames.ora
file nella posizione specificata daTNS_ADMIN
nel file di configurazione .NET. Le posizioni possono essere costituite da percorsi di directory assoluti o relativi. - alias origine dati in
tnsnames.ora
file 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%.