🔎【解決教學】PowerShell 無法連線 Oracle Port 1521?TCP connect failed 的原因與解法全解析
🧩 錯誤背景:PowerShell 測試 Oracle 1521 Port 連線失敗
在 PowerShell 輸入以下指令測試 Oracle 資料庫的 TCP 連線:
結果顯示:
但:
也就是說,你可以 ping 到這台伺服器,但 TCP Port 1521 無法連上,導致連線 Oracle 資料庫失敗。
✅ 常見原因解析與解決對策
1️⃣ 資料庫伺服器防火牆阻擋了 TCP 1521
-
Oracle 使用的預設連接埠為
1521
,若伺服器防火牆未開放此埠口,會導致無法從遠端連線。
✅ 解法:
請在 Oracle 伺服器上開放防火牆:
Windows 防火牆:
Linux 防火牆 (iptables):
2️⃣ Oracle Listener 未啟動或未監聽正確的 IP
Oracle 的 Listener 是用來接收連線的背景程式。若未啟動或綁定錯誤 IP,也會導致連線失敗。
✅ 解法:
登入 Oracle 主機後,執行:
確認輸出中有 1521
且
LISTENING
狀態。
若沒啟動,使用:
並檢查 listener.ora
設定中
HOST
是否為:
-
正確的對外 IP(如
220.133.47.3
) -
或使用
HOST = 0.0.0.0
允許所有 IP 連入
3️⃣ 網路路由或防火牆中間節點阻擋
有時候 ping 成功但 TCP port 被中間防火牆或防毒軟體封鎖。
✅ 解法:
-
請向企業/學校網管確認是否有設備或政策阻擋了 port 1521。
-
嘗試在 同一內網中的其他主機做
Test-NetConnection
,確認是否與區網位置有關。
4️⃣ Oracle Server 綁定的 IP 不是對外 IP
有些 listener 設定為
localhost
或
127.0.0.1
,導致只能接受本機連線。
✅ 解法:
請修改 Oracle 的
listener.ora
,將:
改為:
或
修改後請重新啟動 listener:
5️⃣ 連線字串錯誤
如果你用 TNS 或連線字串方式連線 Oracle,也要確認字串設定是否正確。
✅ 範例:
🧪 延伸測試:從 Server 自己測試
請在 Oracle Server 主機上執行:
若此測試也失敗,表示 Listener 本身沒啟動或沒監聽該 port。
📋 常用 Oracle Listener 排錯指令總整理
指令 | 用途 |
---|---|
lsnrctl status
|
查看目前 listener 狀態 |
lsnrctl start
|
啟動 listener |
lsnrctl stop
|
停止 listener |
lsnrctl reload
|
重新載入設定 |
`netstat -an | findstr 1521` |
🧠 結語:Ping 成功 ≠ 連線成功,請確認 TCP Port 是否正常運作!
雖然你能夠 ping 到主機,代表 IP 是通的,但連不上 TCP 1521 通常是:
-
Listener 沒啟動
-
防火牆沒開
-
中間網路設備阻擋
你可以依照本文的步驟逐一排查,就能快速找出問題並解決。
留言
張貼留言