「編目」是 DB2 中最易混淆卻又最核心的概念之一。本文從體系結構出發,通過建立客戶端到服務端連接的完整步驟,揭示 CATALOG NODE 與 CATALOG DATABASE 的本質:在本地建立指向遠端資源的元數據指針。
系統/節點 (主機)
└─ 實例
└─ 資料庫
└─ 表空間
└─ 資料庫對象 (表、索引、視圖...)
db2 CATALOG TCPIP NODE p570 REMOTE 172.10.10.10 SERVER 50000
p570:本地節點別名(單機唯一)。REMOTE:遠端服務器 IP/主機名。SERVER:遠端實例監聽端口(服務名或端口號)。SQLNODIR 文件寫入記錄,類似「遠端實例的地址指針」。db2 CATALOG DATABASE REMOTEDB AT NODE p570
REMOTEDB:遠端資料庫名(或別名)。AT NODE p570:關聯步驟 1 定義的節點。SQLDBDIR 文件寫入記錄,將遠端資料庫映射為本地別名。db2 CONNECT TO REMOTEDB USER db2inst1 USING password
若客戶端與服務端同機器,無需顯式編目節點。但建立實例與資料庫時,DB2 內部自動執行隱式編目:
db2 CATALOG LOCAL NODE db2inst1 INSTANCE db2inst1 SYSTEM p570 OSTYPE AIX
db2 CATALOG DATABASE mydb AT NODE db2inst1
| 文件 | 用途 | 查看命令 | 刪除命令 |
|---|---|---|---|
| SQLNODIR | 節點目錄 | db2 LIST NODE DIRECTORY | db2 UNCATALOG NODE nodename |
| SQLDBDIR | 資料庫目錄 | db2 LIST DATABASE DIRECTORY | db2 UNCATALOG DATABASE dbalias |
| 現象 | 可能原因 | 解決 |
|---|---|---|
| SQL1013N 數據庫別名不存在 | 未編目資料庫、別名拼寫錯誤、編目到錯誤節點 | LIST DATABASE DIRECTORY 核對;重新 CATALOG |
| SQL30081N 通訊錯誤 | 節點編目 IP/端口錯誤、防火牆阻擋、實例未啟動 | LIST NODE DIRECTORY 核對;telnet 驗證端口 |
| 連接成功但權限不足 | 用戶未授權、組成員缺失 | GRANT CONNECT / DBADM / DATAACCESS |
DB2LDAPHOST、DB2LDAPBASEDN 後,自動從 LDAP 獲取連接資訊,免去分散式手工編目。CATALOG LDAP NODE / DATABASE。編目不是神秘黑盒,而是本地元數據指針表。理解 SQLNODIR(節點指針)與 SQLDBDIR(資料庫指針)的分工,掌握顯式/隱式編目時機,善用 LIST/UNCATALOG 管理,便能輕鬆駕馭 DB2 分佈式連接架構。LDAP 集中編目更是大規模部署的自動化利器。