sql >> Databasteknik >  >> RDS >> Oracle

Fastställande av platsen för relevant tnsnames.ora-fil

Enligt Oracle söks dessa platser efter tnsnames.ora , resp. sqlnet.ora och ldap.ora :

  1. Oracle Net-filer i nuvarande arbetskatalog (PWD/CWD)
  2. TNS_ADMIN definieras sessionsvis eller av användardefinierat skript
  3. TNS_ADMIN definieras som en global miljövariabel
  4. TNS_ADMIN definieras i registret
  5. Oracle Net-filer i %ORACLE_HOME/network|net80\admin (Oracles standardplats)

Jag är dock inte säker på om varje applikation/drivrutin följer denna lista. Jag fick den här listan från Oracle Document 111942.1 som hänvisar till Oracle 9i, så den kan vara föråldrad.

I Database Net Services Administrator's Guide är ordningen

  1. TNS_ADMIN definieras av miljövariabel
  2. TNS_ADMIN definieras i registret (om TNS_ADMIN miljövariabel finns inte)
  3. %ORACLE_HOME%/network/admin katalog (om TNS_ADMIN miljövariabel finns inte)

Jag skulle rekommendera att definiera en miljövariabel för TNS_ADMIN och använd endast en tnsnames.ora-fil. För att vara på den säkra sidan, kontrollera även dina registervärden.

Om dina filer är inte finns i %ORACLE_HOME%\network\admin , jag rekommenderar att du skapar en symbolisk länk för det - bara för att vara på mycket säkra sidan, t.ex. mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin

En annan notering, du behöver inte "leka" med din tnsnames.ora-fil. Med Process Monitor från Microsoft Sysinternals kan du övervaka varje filåtkomst, d.v.s. filtret skulle vara Path contains tnsnames

Uppdatera

När jag kör ett test på min maskin får jag följande order:

  1. Miljövariabel TNS_ADMIN
  2. Registernyckel HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
  3. Registernyckel HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN , resp. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN

    -> Endast om TNS_ADMIN Miljövariabeln är inte inställd.

  4. %ORACLE_HOME%\network\admin
  5. Aktuell katalog (som kan skilja sig från katalogen där ditt program finns)
  6. Mapp där din applikation finns

Uppdatering 2

Uppenbarligen finns det ingen fixsökning, det varierar för olika leverantörer/drivrutiner. Kanske beror det också på Oracle-versionen.

Till exempel Oracle HTTP Server läser TNS_ADMIN inställning från opmn.xml konfigurationsfil.

Ett annat exempel, för ODP.NET Managed Driver (Oracle.ManagedDataAccess) beta version, hittade jag den här beställningen på Oracle Managed and TNS Names :

  1. datakällalias i avsnittet "datakällor" under <oracle.manageddataaccess.client> avsnittet i .NET-konfigurationsfilen (dvs. machine.config , web.config , user.config ).
  2. datakällans alias i tnsnames.ora fil på den plats som anges av TNS_ADMIN i .NET-konfigurationsfilen.
  3. datakällans alias i tnsnames.ora fil som finns i samma katalog som .exe .
  4. datakällans alias i tnsnames.ora fil som finns på %TNS_ADMIN%
    (där %TNS_ADMIN% är en miljövariabelinställning).
  5. datakällans alias i tnsnames.ora fil som finns på %ORACLE_HOME%\network\admin
    (där %ORACLE_HOME% är en miljövariabelinställning).

I officiell dokumentation (12c Release 4 (12.1.0.2.4)) står det:

  1. datakällans alias i dataSources avsnittet under <oracle.manageddataaccess.client> avsnittet i .NET-konfigurationsfilen (dvs. machine.config , web.config , user.config ).
  2. datakällans alias i tnsnames.ora fil på den plats som anges av TNS_ADMIN i .NET-konfigurationsfilen. Platser kan bestå av antingen absoluta eller relativa katalogsökvägar.
  3. datakällans alias i tnsnames.ora fil som finns i samma katalog som .exe .

Men baserat på några tester jag gjorde med ODP.NET Managed Driver (4.121.2.0) tar det %ORACLE_HOME%\network\admin och TNS_ADMIN Miljövariabel beaktas. Lås som dokumentationen är inte 100 % korrekta.



  1. Hur skapar man en temporär tabell i en Oracle-databas?

  2. MySQL utf8mb4, Fel vid lagring av emojis

  3. Hur skapar man en MySQL hierarkisk rekursiv fråga?

  4. phpMyAdmin - kan inte ansluta - ogiltiga inställningar - ända sedan jag lade till ett root-lösenord - låst ute