Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Xác định vị trí của tệp tnsnames.ora có liên quan

Theo Oracle, các vị trí này được tìm kiếm cho tnsnames.ora , tương ứng. sqlnet.oraldap.ora :

  1. Các tệp Oracle Net trong thư mục làm việc hiện tại (PWD / CWD)
  2. TNS_ADMIN được xác định không cố ý hoặc theo tập lệnh do người dùng xác định
  3. TNS_ADMIN được định nghĩa là một biến môi trường toàn cầu
  4. TNS_ADMIN được xác định trong sổ đăng ký
  5. Tệp Oracle Net trong %ORACLE_HOME/network|net80\admin (Vị trí mặc định của Oracle)

Tuy nhiên, tôi không chắc liệu từng ứng dụng / trình điều khiển có tuân theo danh sách này hay không. Tôi lấy danh sách này từ Tài liệu Oracle 111942.1 đề cập đến Oracle 9i, vì vậy nó có thể đã lỗi thời.

Trong Hướng dẫn của Quản trị viên Dịch vụ Mạng Cơ sở dữ liệu, thứ tự là

  1. TNS_ADMIN được xác định bởi biến môi trường
  2. TNS_ADMIN được xác định trong sổ đăng ký (nếu TNS_ADMIN biến môi trường không có)
  3. %ORACLE_HOME%/network/admin thư mục (if TNS_ADMIN biến môi trường không có)

Tôi khuyên bạn nên xác định một biến môi trường cho TNS_ADMIN và chỉ sử dụng một tệp tnsnames.ora. Để an toàn, hãy kiểm tra các giá trị đăng ký của bạn.

Nếu tệp của bạn không nằm trong %ORACLE_HOME%\network\admin , Tôi khuyên bạn nên tạo một liên kết tượng trưng cho nó - chỉ ở trên rất mặt an toàn, ví dụ:mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin

Một lưu ý khác, bạn không phải "chơi" với tệp tnsnames.ora của mình. Với Process Monitor từ Microsoft Sysinternals, bạn có thể giám sát từng quyền truy cập tệp, tức là bộ lọc sẽ là Path contains tnsnames

Cập nhật

Khi tôi chạy thử nghiệm trên máy của mình, tôi nhận được thứ tự sau:

  1. Biến môi trường TNS_ADMIN
  2. Khoá đăng ký HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
  3. Khóa đăng ký HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN , tương ứng. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN

    -> Chỉ khi TNS_ADMIN Biến môi trường không được đặt.

  4. %ORACLE_HOME%\network\admin
  5. Thư mục hiện tại (có thể khác với thư mục chứa ứng dụng của bạn)
  6. Thư mục chứa ứng dụng của bạn

Cập nhật 2

Rõ ràng là không có tìm kiếm sửa chữa, nó khác nhau đối với các nhà cung cấp / trình điều khiển khác nhau. Có thể nó cũng phụ thuộc vào phiên bản Oracle.

Ví dụ: Máy chủ HTTP của Oracle đọc TNS_ADMIN cài đặt từ opmn.xml tệp cấu hình.

Một ví dụ khác, đối với Trình điều khiển được quản lý ODP.NET (Oracle.ManagedDataAccess) beta phiên bản, tôi đã tìm thấy đơn đặt hàng này tại Oracle Managed và TNS Names:

  1. bí danh nguồn dữ liệu trong phần 'dataSources' trong <oracle.manageddataaccess.client> trong tệp cấu hình .NET (tức là machine.config , web.config , user.config ).
  2. bí danh nguồn dữ liệu trong tnsnames.ora tệp tại vị trí được chỉ định bởi TNS_ADMIN trong tệp cấu hình .NET.
  3. bí danh nguồn dữ liệu trong tnsnames.ora tệp có trong cùng thư mục với .exe .
  4. bí danh nguồn dữ liệu trong tnsnames.ora tệp hiện tại ở %TNS_ADMIN%
    (trong đó %TNS_ADMIN% là một cài đặt biến môi trường).
  5. bí danh nguồn dữ liệu trong tnsnames.ora tệp hiện có tại %ORACLE_HOME%\network\admin
    (trong đó %ORACLE_HOME% là một cài đặt biến môi trường).

Trong tài liệu chính thức (12c Release 4 (12.1.0.2.4)) có ghi:

  1. bí danh nguồn dữ liệu trong dataSources trong <oracle.manageddataaccess.client> trong tệp cấu hình .NET (tức là machine.config , web.config , user.config ).
  2. bí danh nguồn dữ liệu trong tnsnames.ora tệp tại vị trí được chỉ định bởi TNS_ADMIN trong tệp cấu hình .NET. Vị trí có thể bao gồm đường dẫn thư mục tuyệt đối hoặc tương đối.
  3. bí danh nguồn dữ liệu trong tnsnames.ora tệp có trong cùng thư mục với .exe .

Tuy nhiên, dựa trên một số thử nghiệm tôi đã thực hiện với Trình điều khiển được quản lý ODP.NET (4.121.2.0), nó cần %ORACLE_HOME%\network\adminTNS_ADMIN Biến môi trường được tính đến. Các khóa như tài liệu hướng dẫn không đúng 100%.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Điền một bảng PL / SQL từ một khối trong các biểu mẫu D2k của Oracle

  2. Cuộn lại A nếu B sai. khởi động mùa xuân, jdbctemplate

  3. Các tính năng mới hàng đầu của Oracle 12c

  4. Cách giải quyết ORA-00900

  5. Oracle có tương đương với các biến bảng của SQL Server không?