CATALOG 不是「編目」那麼抽象——它是 將遠端伺服器/資料庫的連線資訊(IP、埠、資料庫名)登錄到本地 DB2 用戶端的目錄檔中。登錄後,本地應用即可像連線本地資料庫一樣,使用別名直接連線遠端資料庫,無須在連線字串寫死 IP/Port。
db2 CATALOG TCPIP NODE <node_name> REMOTE <hostname|IP> SERVER <port|service_name>
參數說明:
<node_name>:自訂節點別名(如 DB2NODE_PROD),全域唯一,可用 db2 LIST NODE DIRECTORY 查看現有節點。REMOTE:遠端主機名或 IP 位址。SERVER:遠端 DB2 監聽埠號(如 50000)或 /etc/services 定義的服務名稱。範例:
db2 CATALOG TCPIP NODE PROD_NODE REMOTE 192.168.10.100 SERVER 50000
db2 CATALOG DATABASE <remote_db_name> AS <local_alias> AT NODE <node_name>
參數說明:
<remote_db_name>:遠端實際資料庫名稱(如 PRODDB)。<local_alias>:本地使用的別名(如 PROD_ALIAS),應用程式連線時用此名稱。AT NODE:指定步驟 1 建立的節點名稱。範例:
db2 CATALOG DATABASE PRODDB AS PROD_ALIAS AT NODE PROD_NODE
# 查看節點目錄
db2 LIST NODE DIRECTORY
# 查看資料庫目錄
db2 LIST DATABASE DIRECTORY
# 實際連線測試
db2 CONNECT TO PROD_ALIAS USER db2admin USING password
db2 UPDATE ALTERNATE SERVER FOR DATABASE <alias> USING HOST <ip> PORT <port> SECURITY SSLAUTHENTICATION 參數。不想打指令可用 IBM Data Studio 或 DB2 Configuration Assistant (舊版) 以圖形介面完成相同操作,本質皆是寫入本地目錄檔(Windows 登錄表、Linux/Unix sqldbdir/sqlnodir)。
| 錯誤代碼 | 原因 | 對策 |
|---|---|---|
| SQL1013N | 節點名稱重複 | 換個唯一節點名或先 UNCATALOG |
| SQL1057W | 資料庫別名已存在 | 先 UNCATALOG DATABASE 或改別名 |
| SQL30081N | 連線測試失敗 | 檢查 IP/埠/防火牆/遠端 DB2COMM |
db2 UNCATALOG DATABASE <alias>
db2 UNCATALOG NODE <node_name>
CATALOG NODE → CATALOG DATABASE → CONNECT ALIAS 三步走,建立「邏輯名稱 → 物理連線」的映射層。善用別名機制,讓應用程式脫離硬編碼 IP,是 DB2 用戶端配置的專業基本功。