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_ADMIN
biến môi trường không có) -
%ORACLE_HOME%/network/admin
thư mục (ifTNS_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:
- 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_ADMIN
Biế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.ora
tệp tại vị trí được chỉ định bởiTNS_ADMIN
trong tệp cấu hình .NET. - bí danh nguồn dữ liệu trong
tnsnames.ora
tệp có trong cùng thư mục với.exe
. - 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). - 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:
- 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
). - bí danh nguồn dữ liệu trong
tnsnames.ora
tệp tại vị trí được chỉ định bởiTNS_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. - 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\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%.