Theo Oracle, các vị trí này được tìm kiếm cho tnsnames.ora , tương ứng. sqlnet.ora và ldap.ora :
- Các tệp Oracle Net trong thư mục làm việc hiện tại (PWD / CWD)
-
TNS_ADMINđược xác định không cố ý hoặc theo tập lệnh do người dùng xác định -
TNS_ADMINđược định nghĩa là một biến môi trường toàn cầu -
TNS_ADMINđược xác định trong sổ đăng ký - 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à
-
TNS_ADMINđược xác định bởi biến môi trường -
TNS_ADMINđược xác định trong sổ đăng ký (nếuTNS_ADMINbiến môi trường không có) -
%ORACLE_HOME%/network/adminthư mục (ifTNS_ADMINbiế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:
- Biến môi trường
TNS_ADMIN - Khoá đăng ký
HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN -
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_ADMINBiến môi trường không được đặt. -
%ORACLE_HOME%\network\admin - 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)
- 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:
- 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). - bí danh nguồn dữ liệu trong
tnsnames.oratệp tại vị trí được chỉ định bởiTNS_ADMINtrong tệp cấu hình .NET. - bí danh nguồn dữ liệu trong
tnsnames.oratệp có trong cùng thư mục với.exe. - bí danh nguồn dữ liệu trong
tnsnames.oratệp hiện tại ở%TNS_ADMIN%
(trong đó%TNS_ADMIN%là một cài đặt biến môi trường). - bí danh nguồn dữ liệu trong
tnsnames.oratệ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:
- bí danh nguồn dữ liệu trong
dataSourcestrong<oracle.manageddataaccess.client>trong tệp cấu hình .NET (tức làmachine.config,web.config,user.config). - bí danh nguồn dữ liệu trong
tnsnames.oratệp tại vị trí được chỉ định bởiTNS_ADMINtrong 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. - bí danh nguồn dữ liệu trong
tnsnames.oratệ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\admin và TNS_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%.