o8161 (8.1.6) / o8151 (8.1.5)
$ lsnrctl start
TNS-01106: Listener using listener name LISTENER has already been started
兩個 listener.ora 的 **IPC 協議 KEY 值相同** (預設 EXTPROC0),AIX 核心層面 **KEY 全系統唯一**,第二個 Listener 綁定失敗。
# o8161 listener.ora (未修改)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)))
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = loopback)(PORT = 1521)))
)
)
# o8151 listener.ora (衝突)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))) -- 衝突!
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = loopback)(PORT = 1526)))
)
)
# o8151 listener.ora (修正後)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = TESTo815))) -- 唯一 KEY
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = loopback)(PORT = 1526)))
)
)
# 1. 停止所有 Listener
lsnrctl stop LISTENER_o8161
lsnrctl stop LISTENER_o8151
# 2. 分別啟動 (指定 listener.ora 路徑)
lsnrctl start LISTENER_o8161
lsnrctl start LISTENER_o8151
# 3. 確認狀態
lsnrctl status LISTENER_o8161
lsnrctl status LISTENER_o8151
| 實例 | Listener 名稱 | IPC KEY | TCP PORT |
|---|---|---|---|
| o8161 | LISTENER_O8161 | EXTPROC_O8161 | 1521 |
| o8151 | LISTENER_O8151 | EXTPROC_O8151 | 1526 |
| prod | LISTENER_PROD | EXTPROC_PROD | 1521 |
| test | LISTENER_TEST | EXTPROC_TEST | 1522 |
**原則**:Listener Name、IPC KEY、TCP PORT 三者皆唯一,命名包含實例識別碼,避免人為疏失。
SERVICE_NAME=pdb_name 路由)。LOCAL_LISTENER 參數指向。單機多實例/多 Listener 部署,**IPC KEY 唯一性是鐵律**。採用「實例名+用途」命名慣例,配合自動化部署腳本驗證,可徹底杜絕 TNS-01106 衝突。記住:lsnrctl status 看不到衝突,**啟動第二個才會報錯**,預防勝於治療。