DB2 採用目錄驅動連線架構:客戶端不直接解析主機名/IP,而是查詢本地目錄檔(SQLNODIR 節點目錄、SQLDBDIR 資料庫目錄)獲取遠端伺服器的網路端點與實例資訊。這層間接層實現了連線資訊集中管理、多別名支援、無縫遷移。
場景:客戶端(Windows/Linux)連線至遠端 p570(IP 172.10.10.10,實例埠 50000,資料庫 REMOTEDB)。
db2 catalog tcpip node p570 remote 172.10.10.10 server 50000
p570:本地節點別名(本機唯一)。remote:遠端主機 IP/主機名。server:遠端實例監聽埠(或服務名,需 /etc/services 解析)。db2 list node directory 可見 p570 條目。db2 catalog db REMOTEDB at node p570
REMOTEDB:遠端實例下的資料庫名稱。at node p570:關聯步驟 1 定義的節點別名。db2 list database directory 顯示本地別名 REMOTEDB,連線時直接 db2 connect to REMOTEDB 即可。當客戶端與伺服器同一台主機時,無需顯式編目節點。但實例/資料庫建立過程中,DB2 內部自動執行隱式編目:
# 內部等效指令
db2 catalog local node db2inst1 instance db2inst1 system p570 ostype aix
local node:標識本機節點。instance db2inst1:實例名稱雙重指定(節點別名=實例名)。system p570:主機名。ostype aix:作業系統類型(影響路徑分隔符、IPC 機制)。# 內部等效指令
db2 catalog db MYDB at node db2inst1
MYDB)。db2inst1),關聯隱式節點目錄條目。| 操作 | 命令範例 | 目標目錄檔 |
|---|---|---|
| 編目 TCP/IP 遠端節點 | db2 catalog tcpip node NODE1 remote 10.1.1.1 server 50000 | SQLNODIR |
| 編目本地節點 | db2 catalog local node LOCAL_INST instance LOCAL_INST system HOST ostype linux | SQLNODIR |
| 編目遠端資料庫 | db2 catalog db REMOTE_DB at node NODE1 | SQLDBDIR |
| 編目本地資料庫(別名不同) | db2 catalog db LOCAL_DB as MYALIAS at node LOCAL_INST | SQLDBDIR |
| 取消編目節點 | db2 uncatalog node NODE1 | SQLNODIR |
| 取消編目資料庫 | db2 uncatalog db MYALIAS | SQLDBDIR |
| 列出節點目錄 | db2 list node directory | SQLNODIR |
| 列出資料庫目錄 | db2 list database directory | SQLDBDIR |
PROD_DB、REPORT_DB 供不同應用使用,互不干擾。DB2LDAPCACHE=YES 自動下拉,實現「一次配置、全域生效」。HOSTNAME, PORT, DATABASE(JDBC/CLI/ODBC 均支援),但失去集中管理優勢,不建議生產環境使用。db2 list node directory / db2 list database directory 確認本地目錄條目存在且參數正確。db2 ping NODE1 測試節點網路連通性(驗證 IP/埠/防火牆)。db2 connect to MYALIAS 實測連線;失敗時檢查 db2diag.log、SQLCODE、遠端 db2comm、svcename 配置。掌握「節點編目 → 資料庫編目」雙步驟邏輯、隱式本地編目內幕、目錄檔(SQLNODIR/SQLDBDIR)物理位置與 LDAP 擴展機制,即能從容應對 DB2 從開發到生產的各類連線拓撲變更與故障診斷。