在 CentOS 7 上配置好 Oracle 11g 並測試通過後,重啟服務器導致監聽無法啟動,報錯 TNS-12545: Connect failed because target host or object does not exist、Linux Error: 99: Cannot assign requested address。本文分析原因並給出解決方案。
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.110)(PORT=1521)))
TNS-12545: Connect failed because target host or object does not exist
TNS-12560: TNS:protocol adapter error
TNS-00515: Connect failed because target host or object does not exist
Linux Error: 99: Cannot assign requested address
監聽器配置 listener.ora 中 HOST=192.168.0.110 使用了具體 IP 地址。重啟後,網絡服務啟動順序可能導致該 IP 尚未綁定到網卡,或主機名解析異常,監聽器綁定失敗。
hostname 獲取,假設為 chkj。/etc/hosts 確保主機名解析到正確 IP:127.0.0.1 localhost localhost.localdomain
192.168.0.110 chkj
listener.ora,將 HOST 改為主機名:LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = chkj)(PORT = 1521))
)
)
tnsnames.ora 中的 HOST 為主機名。lsnrctl stop → lsnrctl start。lsnrctl status
# 應顯示 Listening on: ... (HOST=chkj) ... 且無錯誤
systemctl enable oracle-listener(需編寫 systemd 服務腳本)。firewall-cmd --permanent --add-port=1521/tcp。監聽器綁定地址建議使用主機名而非硬編碼 IP,避免網絡服務啟動順序導致的綁定失敗。配合 /etc/hosts 正確解析,可穩定解決重啟後監聽無效問題。