Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Menentukan lokasi file tnsnames.ora yang relevan

Menurut Oracle, lokasi ini dicari tnsnames.ora , hal. sqlnet.ora dan ldap.ora :

  1. File Oracle Net di direktori kerja saat ini (PWD/CWD)
  2. TNS_ADMIN didefinisikan secara sesi atau dengan skrip yang ditentukan pengguna
  3. TNS_ADMIN didefinisikan sebagai variabel lingkungan global
  4. TNS_ADMIN didefinisikan dalam registri
  5. File Oracle Net di %ORACLE_HOME/network|net80\admin (Lokasi default Oracle)

Namun, saya tidak yakin apakah setiap aplikasi/driver mengikuti daftar ini. Saya mendapatkan daftar ini dari Oracle Document 111942.1 mengacu pada Oracle 9i, jadi mungkin sudah ketinggalan zaman.

Dalam Panduan Administrator Layanan Jaringan Basis Data urutannya adalah

  1. TNS_ADMIN ditentukan oleh variabel lingkungan
  2. TNS_ADMIN didefinisikan dalam registri (jika TNS_ADMIN variabel lingkungan tidak ada)
  3. %ORACLE_HOME%/network/admin direktori (jika TNS_ADMIN variabel lingkungan tidak ada)

Saya akan merekomendasikan untuk mendefinisikan variabel lingkungan untuk TNS_ADMIN dan gunakan hanya satu file tnsnames.ora. Agar aman, periksa juga nilai registri Anda.

Jika file Anda tidak terletak di %ORACLE_HOME%\network\admin , saya sarankan untuk membuat tautan simbolis untuk itu - hanya untuk berada di sangat sisi yang aman, mis. mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin

Catatan lain, Anda tidak harus "bermain" dengan file tnsnames.ora Anda. Dengan Monitor Proses dari Microsoft Sysinternals Anda dapat memantau setiap akses file, yaitu filternya adalah Path contains tnsnames

Perbarui

Ketika saya menjalankan tes di mesin saya, saya mendapatkan pesanan berikut:

  1. Variabel lingkungan TNS_ADMIN
  2. Kunci Registri HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
  3. Kunci Registri HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN , hal. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN

    -> Hanya jika TNS_ADMIN Variabel lingkungan tidak disetel.

  4. %ORACLE_HOME%\network\admin
  5. Direktori saat ini (yang mungkin berbeda dengan direktori tempat aplikasi Anda berada)
  6. Folder tempat aplikasi Anda berada

Perbarui 2

Jelas tidak ada pencarian perbaikan, ini bervariasi untuk penyedia/driver yang berbeda. Mungkin juga tergantung pada versi Oracle.

Misalnya, Server HTTP Oracle membaca TNS_ADMIN pengaturan dari opmn.xml file konfigurasi.

Contoh lain, untuk ODP.NET Managed Driver (Oracle.ManagedDataAccess) beta versi, saya menemukan pesanan ini di Oracle Managed dan TNS Names :

  1. alias sumber data di bagian 'sumber data' di bawah <oracle.manageddataaccess.client> bagian dalam file konfigurasi .NET (yaitu machine.config , web.config , user.config ).
  2. alias sumber data di tnsnames.ora file di lokasi yang ditentukan oleh TNS_ADMIN dalam file konfigurasi .NET.
  3. alias sumber data di tnsnames.ora file yang ada di direktori yang sama dengan .exe .
  4. alias sumber data di tnsnames.ora file ada di %TNS_ADMIN%
    (di mana %TNS_ADMIN% adalah pengaturan variabel lingkungan).
  5. alias sumber data di tnsnames.ora file ada di %ORACLE_HOME%\network\admin
    (di mana %ORACLE_HOME% adalah pengaturan variabel lingkungan).

Dalam dokumentasi resmi (12c Rilis 4 (12.1.0.2.4)) dikatakan:

  1. alias sumber data di dataSources bagian di bawah <oracle.manageddataaccess.client> bagian dalam file konfigurasi .NET (yaitu machine.config , web.config , user.config ).
  2. alias sumber data di tnsnames.ora file di lokasi yang ditentukan oleh TNS_ADMIN dalam file konfigurasi .NET. Lokasi dapat terdiri dari jalur direktori absolut atau relatif.
  3. alias sumber data di tnsnames.ora file yang ada di direktori yang sama dengan .exe .

Namun, berdasarkan beberapa pengujian yang saya lakukan dengan ODP.NET Managed Driver (4.121.2.0) dibutuhkan %ORACLE_HOME%\network\admin dan TNS_ADMIN Variabel lingkungan diperhitungkan. Kunci seperti dokumentasi tidak 100% benar.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan Waktu Lokal Saat Ini dari Setiap Negara di PL/SQL

  2. Bagaimana cara ZIP File di PL/SQL?

  3. ORACLE dan TRIGGERS (dimasukkan, diperbarui, dihapus)

  4. 2PL, Model Ketat vs Ketat, Apakah Ada Manfaatnya?

  5. Fungsi WIDTH_BUCKET() di Oracle