Theo Oracle, các vị trí này được tìm kiếm cho tnsnames.ora
, tương ứng. sqlnet.ora
:
- đường dẫn hiện tại (được liên kết với ứng dụng khách đang chạy)
- Biến môi trường
TNS_ADMIN
được xác định cho phiên - Biến môi trường
TNS_ADMIN
được xác định cho hệ thống - Khóa đăng ký Windows
HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN
(cho 64 bit) hoặcHKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN
(cho 32 bit) -
%ORACLE_HOME%\network\admin
Tuy nhiên, tôi không chắc liệu từng ứng dụng / trình điều khiển / phiên bản có tuân theo danh sách này hay không. Danh sách này do Oracle cung cấp liên quan đến phiên bản 9i, tôi nghĩ bạn sẽ quản lý nó để truy vấn các thư mục này bằng VBScript.
Nếu ORACLE_HOME
không được đặt bởi biến Môi trường, bạn phải truy vấn Sổ đăng ký HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME
(cho 64 bit) hoặc HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME
(cho 32 bit)
Đối với ORACLE_HOME_NAME
bạn phải điều hướng đến bin
Oracle của mình thư mục (được tìm thấy qua %PATH%
Biến môi trường) và mở tệp oracle.key
. Đây là một tệp văn bản đơn giản chỉ chứa ORACLE_HOME_NAME
giá trị, ví dụ: OraClient11g_home1 .
Tuy nhiên, thường chỉ có một Trang chủ Oracle bên dưới HKLM\SOFTWARE\ORACLE
nên đang tìm kiếm và đọc tệp oracle.key
có thể là mức quá mức cần thiết.
Cập nhật
Khi tôi chạy thử nghiệm trên máy của mình (với Oracle Client 11.2), tôi nhận được thứ tự sau:
- Biến môi trường
TNS_ADMIN
-
HKLM\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
, tương ứng.HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
-> Chỉ khiTNS_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
Để phân tích sâu, bạn phải tìm kiếm tnsnames.ora
, sqlnet.ora
và ldap.ora
. Tên cơ sở dữ liệu Oracle có thể được giải quyết thông qua từng tên, tức là kết nối có thể được thiết lập ngay cả khi tnsnames.ora
và sqlnet.ora
không tồn tại.