Oracle 監聽器配置錯誤導致 Client 無法連線,是 DBA 最高頻處理事件。本文將六大經典錯誤代碼整理為一頁式速查表,含錯誤含義、根因、即時指令與驗證步驟,適合列印貼於機房牆面。
tnsnames.ora,描述連線目標| 錯誤代碼 | 完整訊息 | 根因 | 即時排查指令/動作 | 驗證 |
|---|---|---|---|---|
| ORA-12541 | TNS: no listener | 監聽器未啟動 | lsnrctl start (Linux/Win)檢查 Client IP/Port 設定 | lsnrctl status 顯示 READY |
| ORA-12500 | TNS: listener failed to start dedicated server process | 資料庫 Instance 未啟動 | Win: oradim -startup -sid <SID>Linux: sqlplus / as sysdba → STARTUP | SELECT status FROM v$instance; = OPEN |
| ORA-12535 | TNS: operation timed out | 網路不通 / 防火牆阻擋 | 1. ping <Server IP>2. telnet <Server IP> 15213. 雙邊防火牆開放 1521/TCP | telnet 成功顯示空白畫面 |
| ORA-12154 | TNS: could not resolve the connect identifier specified | 服務名錯誤 / tnsnames.ora 格式錯 | 1. 確認 TNS 別名拼寫 2. 檢查 tnsnames.ora 首行服務名前無空格3. tnsping <alias> | tnsping 返回 OK |
| ORA-12514 | TNS: listener does not currently know of service requested in connect descriptor | 服務名與監聽器註冊的不符 | Net Manager → 服務識別欄 = 監聽器的 GLOBAL_DBNAME | lsnrctl services 顯示服務名匹配 |
| Win 服務 找不到路徑 | 啟動監聽器/Instance 服務提示路徑錯誤 | 註冊表 ImagePath 遺失/錯誤 | 監聽器:HKLM\SYSTEM\CurrentControlSet\Services\OracleOraHome92TNSListener\ImagePath= D:\oracle\ora92\BIN\TNSLSNRInstance: HKLM\SYSTEM\CurrentControlSet\Services\OracleService= D:\oracle\ora92\bin\ORACLE.EXE <SID> | services.msc 啟動成功 |
tnsnames.ora = Server listener.ora (Host, Port, Service Name)ping → telnet 1521 → lsnrctl status → tnsping → sqlpluslsnrctl services
# 輸出關鍵行:
Service "ORCL" has 1 instance(s).
Instance "ORCL", status READY, has 1 handler(s)...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
若無 status READY,檢查 LOCAL_LISTENER、SERVICE_NAMES 參數。
監聽器連線問題 = 配置不一致 + 服務未啟動 + 網路阻隔。背熟六大錯誤碼對應層級,建立「網路→服務→配置」三步驟肌肉記憶,平均排查時間可從 30 分鐘壓縮至 5 分鐘以內。