Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Określanie lokalizacji odpowiedniego pliku tnsnames.ora

Według Oracle te lokalizacje są wyszukiwane dla tnsnames.ora , ew. sqlnet.ora i ldap.ora :

  1. Pliki Oracle Net w obecnym katalogu roboczym (PWD/CWD)
  2. TNS_ADMIN zdefiniowany sesyjnie lub za pomocą skryptu zdefiniowanego przez użytkownika
  3. TNS_ADMIN zdefiniowana jako globalna zmienna środowiskowa
  4. TNS_ADMIN zdefiniowane w rejestrze
  5. Pliki Oracle Net w %ORACLE_HOME/network|net80\admin (Domyślna lokalizacja Oracle)

Nie jestem jednak pewien, czy każda aplikacja/sterownik podąża za tą listą. Mam tę listę z Dokumentu Oracle 111942.1 odnoszącego się do Oracle 9i, więc może być nieaktualna.

W Przewodniku administratora usług sieciowych w bazie danych kolejność to

  1. TNS_ADMIN zdefiniowana przez zmienną środowiskową
  2. TNS_ADMIN zdefiniowane w rejestrze (jeśli TNS_ADMIN zmienna środowiskowa nie jest obecna)
  3. %ORACLE_HOME%/network/admin katalog (jeśli TNS_ADMIN zmienna środowiskowa nie jest obecna)

Polecam zdefiniowanie zmiennej środowiskowej dla TNS_ADMIN i używaj tylko jednego pliku tnsnames.ora. Aby być po bezpiecznej stronie, sprawdź również wartości rejestru.

Jeśli Twoje pliki nie znajduje się w %ORACLE_HOME%\network\admin , polecam utworzyć dla niego dowiązanie symboliczne - żeby być na bardzo bezpieczna strona, m.in. mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin

Kolejna uwaga, nie musisz "bawić się" swoim plikiem tnsnames.ora. Dzięki Process Monitor firmy Microsoft Sysinternals możesz monitorować dostęp do każdego pliku, tj. filtrem będzie Path contains tnsnames

Aktualizacja

Po uruchomieniu testu na moim komputerze otrzymuję następującą kolejność:

  1. Zmienna środowiskowa TNS_ADMIN
  2. Klucz rejestru HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
  3. Klucz rejestru HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN , ew. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN

    -> Tylko jeśli TNS_ADMIN Zmienna środowiskowa nie jest ustawiona.

  4. %ORACLE_HOME%\network\admin
  5. Aktualny katalog (który może być inny niż katalog, w którym znajduje się Twoja aplikacja)
  6. Folder, w którym znajduje się Twoja aplikacja

Aktualizacja 2

Oczywiście nie ma wyszukiwania poprawek, różni się dla różnych dostawców/sterowników. Może to również zależy od wersji Oracle.

Na przykład Serwer HTTP Oracle czyta TNS_ADMIN ustawienie z opmn.xml plik konfiguracyjny.

Inny przykład, dla sterownika zarządzanego ODP.NET (Oracle.ManagedDataAccess) beta wersji, znalazłem to zamówienie w Oracle Managed i TNS Names :

  1. Alias ​​źródła danych w sekcji „dataSources” w obszarze <oracle.manageddataaccess.client> sekcji w pliku konfiguracyjnym .NET (np. machine.config , web.config , user.config ).
  2. alias źródła danych w pliku tnsnames.ora plik w lokalizacji określonej przez TNS_ADMIN w pliku konfiguracyjnym .NET.
  3. alias źródła danych w pliku tnsnames.ora plik znajduje się w tym samym katalogu co .exe .
  4. alias źródła danych w pliku tnsnames.ora plik obecny w %TNS_ADMIN%
    (gdzie %TNS_ADMIN% jest ustawieniem zmiennej środowiskowej).
  5. alias źródła danych w pliku tnsnames.ora plik obecny w %ORACLE_HOME%\network\admin
    (gdzie %ORACLE_HOME% jest ustawieniem zmiennej środowiskowej).

W oficjalnej dokumentacji (12c Release 4 (12.1.0.2.4)) jest napisane:

  1. alias źródła danych w dataSources w sekcji <oracle.manageddataaccess.client> sekcji w pliku konfiguracyjnym .NET (np. machine.config , web.config , user.config ).
  2. alias źródła danych w pliku tnsnames.ora plik w lokalizacji określonej przez TNS_ADMIN w pliku konfiguracyjnym platformy .NET. Lokalizacje mogą składać się z bezwzględnych lub względnych ścieżek katalogów.
  3. alias źródła danych w pliku tnsnames.ora plik znajduje się w tym samym katalogu co .exe .

Jednak w oparciu o niektóre testy, które wykonałem ze sterownikiem zarządzanym ODP.NET (4.121.2.0), zajmuje on %ORACLE_HOME%\network\admin i TNS_ADMIN Uwzględniona zmienna środowiskowa. Blokady takie jak dokumentacja nie są w 100% poprawne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cloud Native i DevSecOps na dużą skalę dzięki Capgemini Agile Innovation Platform i Oracle Cloud

  2. Doradca ds. kompresji 11gR2 =Zło

  3. Dlaczego uruchomienie tego zapytania z EXECUTE IMMEDIATE powoduje jego niepowodzenie?

  4. Aktualizacja Oracle zawiesza się

  5. REGEXP_REPLACE() Funkcja w Oracle