錯誤現象
ORA-12541: TNS: no listener
兩大可能原因
- 監聽器未運行或運行在非預期端口;
tnsnames.ora 指向的主機/端口與監聽器實際綁定不符。
排查步驟
- 確認監聽器狀態:
Windows: services.msc 查找 OracleOraHome92TNSListener → 啟動;
Linux/Unix: lsnrctl status;
- 查看監聽器綁定端口:
lsnrctl status 輸出 Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=...)(PORT=1521)));
- 檢查
tnsnames.ora:
MYDB = (DESCRIPTION = (ADDRESS = (PROTOCOL=TCP)(HOST=正确IP)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=orcl)));
- 單機環境簡化連接:
設置環境變量 ORACLE_SID=orcl,直接 SQLPLUS / AS SYSDBA 或 SQLPLUS scott/tiger,繞過 TNS 解析。
快速驗證命令
TNSPING MYDB
LSNRCTL SERVICES