DB2 遠端連線核心在於「編目」:將遠端伺服器與資料庫映射到本地編目檔。本文記錄 Windows/Linux 客戶端連線 Linux/Windows 伺服器的標準化 5 步驟流程與關鍵檢查點。
db2 catalog tcpip node test remote 192.168.42.102 server 50000
# test = 本地節點別名 (自訂)
# server = 伺服器端 SVCENAME 埠號
# Linux 伺服器: cat /etc/services | grep db2inst1
# db2inst1 50000/tcp
# Windows 伺服器: type C:\WINNT\System32\drivers\etc\services
db2 catalog db coshine at node test
# coshine = 伺服器端資料庫名
# test = 步驟1 定義的節點別名
db2 terminate
# 1. 伺服器端查看
db2set -all
# 找到 DB2CODEPAGE=819 (或 1386 簡體中文)
# 2. 客戶端設定相同值
db2set DB2CODEPAGE=819
# 或 1386 (簡體中文 GBK)
# db2country=86 (中國)
db2 connect to coshine user <用戶名> using <密碼>
# 關鍵: user_name 是資料庫授權用戶,非 OS 用戶
# 密碼對應該授權用戶密碼
| 檢查項 | 指令 | 預期結果 |
|---|---|---|
| 網路通達 | ping 192.168.42.102 | 可通 |
| 伺服器 DB2 啟動 | db2start (伺服器端) | SQL1063N 成功 |
| 客戶端 DB2COMM | db2set -all | grep DB2COMM | DB2COMM=TCPIP |
| SVCENAME 一致 | db2 get dbm cfg | grep SVCENAME | 50000 或服務名 |
| 代碼頁一致 | 雙端 db2set DB2CODEPAGE | 相同值 (819/1386) |
| 防火牆埠 | telnet 192.168.42.102 50000 | 連線成功 |
db2set DB2CODEPAGE=1386 僅改變**環境變數**,不改變**資料庫建立時的代碼頁**# 若 SVCENAME 不正確
db2 update dbm cfg using SVCENAME db2inst1
# db2inst1 為 /etc/services 中定義的服務名 (對應 50000/tcp)
遵循此 5 步驟 + 檢查清單,可解決 95% 以上的 DB2 遠端連線問題。