Podle Oracle jsou tato umístění vyhledávána pomocí tnsnames.ora , resp. sqlnet.ora a ldap.ora :
- Soubory Oracle Net v současném pracovním adresáři (PWD/CWD)
TNS_ADMINdefinované relací nebo uživatelem definovaným skriptemTNS_ADMINdefinována jako globální proměnná prostředíTNS_ADMINdefinované v registru- Soubory Oracle Net v
%ORACLE_HOME/network|net80\admin(Výchozí umístění Oracle)
Nejsem si však jistý, zda každá aplikace/ovladač tento seznam dodržuje. Tento seznam jsem získal z dokumentu Oracle 111942.1 s odkazem na Oracle 9i, takže může být zastaralý.
V příručce Database Net Services Administrator's Guide je pořadí
TNS_ADMINdefinované proměnnou prostředíTNS_ADMINdefinované v registru (pokudTNS_ADMINproměnná prostředí není přítomna)%ORACLE_HOME%/network/adminadresář (pokudTNS_ADMINproměnná prostředí není přítomna)
Doporučil bych definovat proměnnou prostředí pro TNS_ADMIN a použijte pouze jeden soubor tnsnames.ora. Chcete-li být na bezpečné straně, zkontrolujte také hodnoty registru.
Pokud vaše soubory nejsou umístěn v %ORACLE_HOME%\network\admin , doporučuji vytvořit na něj symbolický odkaz - jen abyste byli na velmi bezpečná strana, např. mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin
Další poznámka, nemusíte si „hrát“ se svým souborem tnsnames.ora. S Process Monitor od Microsoft Sysinternals můžete sledovat každý přístup k souboru, tj. filtr by byl Path contains tnsnames
Aktualizovat
Když spustím test na svém počítači, dostanu následující pořadí:
- Proměnná prostředí
TNS_ADMIN - Klíč registru
HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN -
Klíč registru
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN, resp.HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN-> Pouze pokud
TNS_ADMINProměnná prostředí není nastavena. %ORACLE_HOME%\network\admin- Aktuální adresář (který se může lišit od adresáře, kde se nachází vaše aplikace)
- Složka, ve které se nachází vaše aplikace
Aktualizace 2
Je zřejmé, že neexistuje žádné hledání oprav, liší se pro různé poskytovatele/ovladače. Možná to také závisí na verzi Oracle.
Například Oracle HTTP Server čte TNS_ADMIN nastavení z opmn.xml konfigurační soubor.
Další příklad pro ODP.NET Managed Driver (Oracle.ManagedDataAccess) beta verze, našel jsem tuto objednávku na Oracle Managed a TNS Names:
- alias zdroje dat v sekci 'dataSources' pod
<oracle.manageddataaccess.client>sekce v konfiguračním souboru .NET (tj.machine.config,web.config,user.config). - alias zdroje dat v
tnsnames.orasoubor v umístění určenémTNS_ADMINv konfiguračním souboru .NET. - alias zdroje dat v
tnsnames.orasoubor ve stejném adresáři jako.exe. - alias zdroje dat v
tnsnames.orasoubor přítomen na%TNS_ADMIN%
(kde%TNS_ADMIN%je nastavení proměnné prostředí). - alias zdroje dat v
tnsnames.orasoubor na%ORACLE_HOME%\network\admin
(kde%ORACLE_HOME%je nastavení proměnné prostředí).
V oficiální dokumentaci (12c Release 4 (12.1.0.2.4)) stojí:
- alias zdroje dat v
dataSourcessekce pod<oracle.manageddataaccess.client>sekce v konfiguračním souboru .NET (tj.machine.config,web.config,user.config). - alias zdroje dat v
tnsnames.orasoubor v umístění určenémTNS_ADMINv konfiguračním souboru .NET. Umístění mohou obsahovat absolutní nebo relativní cesty k adresáři. - alias zdroje dat v
tnsnames.orasoubor ve stejném adresáři jako.exe.
Na základě některých testů, které jsem provedl s ODP.NET Managed Driver (4.121.2.0), však trvá %ORACLE_HOME%\network\admin a TNS_ADMIN Proměnná prostředí v úvahu. Zámky jako v dokumentaci nejsou 100% správné.