獨立於數據庫進程的後台服務,監聽端口(默認 1521),接收客戶端連接請求,完成「握手」後將會話移交給服務器進程,隨後退出通信鏈路。
| 文件 | 位置 | 角色 |
|---|---|---|
| listener.ora | 服務端 | 定義監聽器名稱、協議/主機/端口、服務實例(SID_LIST) |
| sqlnet.ora | 雙端 | 認證方式、名稱解析順序 |
| tnsnames.ora | 客戶端 | 網絡服務名→連接描述符映射 |
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = ORCL)
)
)
建議直接編輯文本文件,而非使用 Net Manager。
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.2)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
STDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.3)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = stdb)
)
)
lsnrctl start [LISTENER] # 啟動
lsnrctl stop [LISTENER] # 停止
lsnrctl status [LISTENER] # 查看狀態
lsnrctl services [LISTENER] # 查看已註冊服務
tnsping ORCL —— 解析別名、測試網絡達到監聽器;sqlplus user/pwd@ORCL —— 完整連接測試;NAMES.DEFAULT_DOMAIN 導致別名被自動加後綴;SERVICE_NAME 與監聽器註冊的不一致;