SQL30081N 表示通訊層面錯誤,常見訊息如下:
SQL30081N A communication error has been detected.
Communication protocol being used: "TCP/IP"
Communication API being used: "SOCKETS"
Protocol specific error code(s): "10061", "*", "*"
SQLSTATE=08001
錯誤碼 10061 (Windows) / 111 (Linux) 意為「連線被拒絕」,通常源於:
db2 connect to <db> user <usr> using <pwd>在 DB2 伺服器本機執行:
db2 connect to <local_db>
db2start。# 1. 確認資料庫存在
db2 list db directory
# 2. 確認通訊協定已啟用
db2set -all # 檢查 DB2COMM=TCPIP
# 3. 確認 SVCENAME 與埠號對應
db2 get dbm cfg # 記下 SVCENAME 值
cat /etc/services # 確認對應埠號條目存在
# 4. 確認埠口監聽
netstat -an | grep LISTEN
# 1. 確認節點目錄指向正確伺服器
db2 list node directory show detail
# 關注:HOSTNAME, SVCENAME (埠號/服務名)
# 2. 基礎網路測試
ping <server_hostname>
telnet <server_ip> <port> # 驗證 TCP 埠口可達
若上述步驟無法定位,可使用 IBM 提供的 DB2 PCT (Problem Determination Tool) 進行深度通訊層追蹤,分析封包交換細節。
| 現象 | 對應處理 |
|---|---|
| SVCENAME 不匹配 | db2 update dbm cfg using svcename <正確服務名/埠號> 後重啟實例 |
| DB2COMM 缺少 TCPIP | db2set DB2COMM=TCPIP 後 db2stop && db2start |
| 防火牆阻擋 | 開放伺服器端 DB2 埠號 (預設 50000) 入站規則 |
| 主機名解析失敗 | 檢查 DNS/hosts 檔,或節點目錄直接使用 IP |