執行 db2start 後出現:
「對一個或多個通訊協定的支援未能成功啟動。但是,成功啟動了核心資料庫管理器功能。」
代表 DB2 引擎已起,但 TCP/IP 通訊層掛點失敗,遠端用戶端無法連線(本地 IPC 連線仍可用)。
type C:\Windows\System32\drivers\etc\services | findstr 50000
# 須存在:db2c_<instname> 50000/tcp
db2set -all | findstr DB2COMM
# 必須輸出:DB2COMM=TCPIP
telnet 127.0.0.1 50000
# 若顯示「無法開啟連線」→ 埠未監聽或被佔用/阻擋
netstat -ano | findstr :50000
# 若其他 PID 佔用 50000 → 修改 /etc/services 與 dbm cfg SVCENAME 為其他埠
db2diag -l error -t 24h | head -50
# 關鍵字:SQL1220N, SQL5043N, DIA8302C, "protocol support"
db2stop force
db2set DB2COMM=TCPIP
db2 UPDATE DBM CFG USING SVCENAME db2c_<instname>
db2start
作者環境一切配置正確(services、DB2COMM、SVCENAME),但 telnet 127.0.0.1 50000 失敗。最終發現為 Windows 防火牆阻擋入站規則。新增入站規則允許 TCP 50000 後即恢復正常。
通訊埠啟動失敗 90% 源於 services 檔遺漏、SVCENAME 不符、防火牆阻擋、埠號衝突 四大原因。依上述清單逐項驗證,通常 10 分鐘內可定位並解決。切記:先驗證埠號層面通聯,再看 DB2 內部日誌,避免誤判為引擎故障。