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_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
Để 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.