sqlnet.ora 是 Oracle Net Services 的關鍵設定檔,同時影響客戶端與伺服器端行為。本文整理核心參數、實際驗證命名解析順序(NAMES.DIRECTORY_PATH)與認證服務(SQLNET.AUTHENTICATION_SERVICES)的交互影響,並說明 IP 存取控制參數群。
| 面向 | 生效端 | 關鍵參數 | 說明 |
|---|---|---|---|
| 命名解析順序 | 客戶端 | NAMES.DIRECTORY_PATH | 決定解析連線識別字的方法與優先序,預設 (tnsnames, onames, hostname)。 |
| 認證服務 | 客戶端 + 伺服器端 | SQLNET.AUTHENTICATION_SERVICES | 指定啟用的驗證機制:none、all、nts(Windows 原生)。 |
| 參數 | 用途 | 備註 |
|---|---|---|
BEQUEATH_DETACH | Unix 訊號處理開關 | 預設 no(開啟) |
DEFAULT_SDU_SIZE | Session Data Unit 大小(bytes) | 客戶/伺服端建議同設,取較小值 |
LOG_DIRECTORY_CLIENT/SERVER | 客戶/伺服端日誌路徑 | |
NAMES.DEFAULT_DOMAIN | 客戶端預設網域 | |
SQLNET_ALLOWED_LOGON_VERSIONS | 允許連線的 Oracle 版本 | 如 (10,9,8) |
SQLNET.INBOUND_CONNECT_TIMEOUT | 客戶端連線逾時秒數 | 逾時中斷並報錯 |
SSL_VERSION | SSL 協定版本 | |
TCP.EXCLUDED_NODES | 禁止存取的主機/IP | |
TCP.INVITED_NODES | 允許存取的主機/IP | 優先級高於 EXCLUDED_NODES |
TCP.VALIDNODE_CHECKING | 啟用上述 IP 過濾 | 設為 yes 生效 |
TNSPING.TRACE_DIRECTORY | tnsping 追蹤檔目錄 | 預設 $ORACLE_HOME/network/trace |
環境:tnsnames.ora 定義 bys3 指向 192.168.1.211:1521/bys3。
# sqlnet.ora
NAMES.DIRECTORY_PATH=(tnsnames)
sqlplus bys/bys@bys3 → 成功(本地別名)sqlplus bys/bys@192.168.1.211:1521/bys3 → ORA-12154(EZCONNECT 被封鎖)NAMES.DIRECTORY_PATH=(tnsnames,ezconnect)
結論:參數值為有序清單,未列入的方法直接失效;生產環境建議明確列出 (tnsnames, ezconnect) 或 (tnsnames, ldap) 等實際需求。
參數值:none(帳密)、all(所有)、nts(Windows 原生)。
→ 正常登入(帳密驗證)。
→ ORA-12641: Authentication service failed to initialize,雙端嘗試協商進階驗證但環境不支援導致失敗。
→ 回退帳密驗證,連線成功。
最佳實踐:若不需 Kerberos、PKI 等進階驗證,雙端均設 SQLNET.AUTHENTICATION_SERVICES=(NONE),避免不必要的協商失敗。
TCP.VALIDNODE_CHECKING = yes 啟用檢查。TCP.INVITED_NODES = (192.168.1.10, appserver.corp) 白名單(優先)。TCP.EXCLUDED_NODES = (192.168.1.200) 黑名單。修改後需 lsnrctl reload 或重啟監聽器生效。
sqlnet.ora 完整參數定義