三大配置檔定位
| 檔案 | 角色 | 類比 | 位置 |
| sqlnet.ora | 客戶端名稱解析策略 | /etc/nsswitch.conf | $ORACLE_HOME/network/admin |
| tnsnames.ora | 客戶端別名→連線描述映射 | /etc/hosts | $ORACLE_HOME/network/admin |
| listener.ora | 伺服器端監聽程式設定 | sshd_config | $ORACLE_HOME/network/admin |
連線解析完整流程 (sqlplus user/pass@orcl)
- 讀取
sqlnet.ora 中 NAMES.DIRECTORY_PATH (預設 (TNSNAMES, HOSTNAME))。
- 優先查
tnsnames.ora 找 ORCL 記錄,取得 HOST, PORT, SERVICE_NAME。
- TCP 連線至 Listener 埠 (預設 1521)。
- Listener 依
SERVICE_NAME / SID 匹配 listener.ora 中 SID_LIST,轉交專用/共用伺服器進程。
- 連線建立,Listener 任務結束。
sqlnet.ora 關鍵參數
SQLNET.AUTHENTICATION_SERVICES = (NTS) -- Windows 整合認證
NAMES.DIRECTORY_PATH = (TNSNAMES, HOSTNAME) -- 解析順序:先 tnsnames,再 hostname
# NAMES.DIRECTORY_PATH = (TNSNAMES) -- 僅用 tnsnames,略過 hostname 解析
tnsnames.ora 範例解析
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED) -- 專用伺服器模式
(SERVICE_NAME = orcl) -- 對應 SHOW PARAMETER SERVICE_NAMES
)
)
SALES =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.219)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sales)
)
)
listener.ora 範例解析
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = boway) -- Host Naming 需要
(ORACLE_HOME = /u01/app/oracle/product/10.1.0/db_1)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521))
)
GLOBAL_DBNAME:僅 Host Naming (免 tnsnames) 需要。
- 一個 Listener 可服務多個 SID (多
SID_DESC)。
圖形化配置工具
netca:嚮導式,適合初始部署。
netmgr:手動微調首選,分頁對應三檔:
Profile → sqlnet.ora | Service Naming → tnsnames.ora | Listeners → listener.ora
三種連線方式比較
| 語法 | 認證 | 需 Listener | 需 DB Open |
| sqlplus / as sysdba | OS | 否 | 否 |
| sqlplus user/pass | DB | 否 (IPC/Bequeath) | 是 |
| sqlplus user/pass@tns | DB | 是 | 是 |
除錯三板斧
lsnrctl status:查服務註冊狀態 (READY/UNKNOWN/BLOCKED)。
tnsping alias:驗證客戶端解析路徑 + Listener 回應時間。
SQL> SHOW SGA / SELECT OPEN_MODE FROM V$DATABASE:確認實例啟動與資料庫開啟狀態。
進階:Host Naming 免 tnsnames.ora
listener.ora 設定 GLOBAL_DBNAME。
sqlnet.ora 加入 HOSTNAME 至 NAMES.DIRECTORY_PATH。
- 客戶端直連
user/pass@hostname,DNS 解析 IP,Listener 依 GLOBAL_DBNAME 匹配。
- 優點:客戶端零配置,IP 變更只改 DNS。
總結
掌握「解析策略 → 別名映射 → 監聽轉交」三階段,配置規範、除錯有法,Oracle 連線問題迎刃而解。