相較於 Oracle/SQL Server 的單一連接字串,DB2 採用 **「節點編目 → 資料庫編目 → 介面層連接」** 三步走架構,雖稍顯繁瑣,但提供了極強的位置透明性與多實例隔離能力。本文以 Windows 為例,完整演示從遠端伺服器到應用程式的連接全鏈路。
# 進入 DB2 命令視窗
db2cmd
db2
# 編目 TCP/IP 節點
# 語法:catalog tcpip node <節點名> remote <主機/IP> server <服務名/端口>
catalog tcpip node NODE207 remote 192.168.80.207 server 50001
NODE_。SVCENAME 參數(預設 50000/50001),可在 /etc/services 或 Windows 服務檔定義別名。# 將遠端資料庫映射到本地別名
# 語法:catalog database <遠端資料庫名> at node <節點名> [authentication <類型>]
catalog database ZCLDB at node NODE207
成功後,本地系統資料庫目錄將出現 ZCLDB 條目,應用端僅需引用此別名。
LOCALDBNAME (自訂)ZCLDB (步驟 2 別名)<connectionStrings>
<add name="DB2ConnectionString"
connectionString="Driver={IBM DB2 ODBC DRIVER};DSN=LOCALDBNAME;UID=app_user;PWD=secret;MODE=SHARE;"
providerName="System.Data.Odbc" />
</connectionStrings>
String url = "jdbc:db2://192.168.80.207:50001/ZCLDB:user=app_user;password=secret;";
Connection conn = DriverManager.getConnection(url);
| 步驟 | 命令 | 預期結果 |
|---|---|---|
| 列出節點目錄 | db2 list node directory | 顯示 NODE207、IP、端口 |
| 列出系統資料庫目錄 | db2 list database directory | 顯示 ZCLDB、別名、節點 |
| 測試 CLI 連接 | db2 connect to ZCLDB user app_user using secret | SQL1063N 成功 / 錯誤碼診斷 |
| ODBC 測試 | ODBC 管理員 → 配置 → 測試連線 | 「測試成功」對話框 |
catalog database 拼寫。DB2CODEPAGE=1208 (UTF-8)。同一台伺服器跑多個實例時,各實例監聽不同端口 (50000, 50001...),客戶端分別編目 NODE_INST1、NODE_INST2,資料庫別名加前綴 INST1_DB、INST2_DB,實現邏輯完全隔離。
DB2 連接核心在於 **「節點編目解耦網路拓撲,資料庫編目提供邏輯別名,介面層透過別名連接」** 三層解耦。掌握 catalog/uncatalog node/database、list node/directory、ODBC DSN 三板斧,即可從容應對遷移、擴容、多租戶等場景。