初學 DB2 或備考認證?本文以圖解方式拆解 DB2 V8 for Linux/UNIX/Windows 核心架構:實例隔離、配置三層(環境變數、Profile Registry、dbm/db cfg)、四大目錄體系、資料庫內部結構(表空間、緩衝池、日誌、表/索引/LOB),並以案例研究串連所有概念,助您快速建立完整心智模型。
架構總覽圖(文中 Figure 1 雙圖)
藍色 = 查詢配置命令,黑色 = 修改配置語法,紫色 = 範例。建議列印彩色對照閱讀。
核心層級結構
1. 實例 —— 獨立運作環境
- 提供隔離命名空間:同名資料庫/表空間可存在於不同實例。
- 支援開發/測試/生產環境分離。
- 命令:`db2icrt` 建立、`db2idrop` 刪除、`db2start`/`db2stop` 啟停、`db2ilist` 列舉。
- Windows 預設實例 `DB2`,UNIX 預設 `db2inst1`。V8 移除 DAS 實例類型,功能整合為服務進程。
- 建立實例後產生至 DB2 程式碼的連結,多實例共享同一組二進制碼。
2. 環境變數 —— OS 層級設定
- Windows:控制台 → 系統 → 環境變數;UNIX:將 `db2profile`/`db2cshrc` 加入 `.profile`/`.login`。
- 關鍵變數 `DB2INSTANCE`:指定當前作用實例,所有命令針對該實例。臨時切換:Windows `set DB2INSTANCE=DB2`(等號前後**不可有空格**),UNIX `export DB2INSTANCE=MyInst`。查看:`echo %DB2INSTANCE%` / `set DB2INSTANCE` / `db2 get instance`。
3. DB2 Profile Registry —— 免重啟的配置倉庫
- 四類註冊表,最常用兩類:
- Global-Level: 對所有實例生效(圖中位於實例框外)。
- Instance-Level: 單一實例生效(圖中各實例內部)。
- 同名變數以**最低層級優先**(Instance > Global)。
- 命令:`db2set -all` 檢視(`[g]`全域、`[i]`實例)、`db2set -lr` 列舉所有支援變數、`db2set VAR=VALUE -g/-i INST` 設定。修改後建議 `db2stop && db2start` 生效。
4. 配置參數 —— 兩層獨立參數集
- Database Manager Configuration (dbm cfg): 實例層級,影響該實例**所有**資料庫。命令:`db2 get dbm cfg`、`db2 update dbm cfg using PARAM VALUE`。V8 約 40% 參數可線上生效(無需重啟實例)。
- Database Configuration (db cfg): 資料庫層級,影響單一資料庫。命令:`db2 get db cfg for DBNAME`、`db2 update db cfg for DBNAME using PARAM VALUE`。V8 約 50% 參數可線上生效(無需斷開所有連接)。
5. 四大目錄體系 —— 連通性地圖
| 目錄 | 用途 | 層級 | 關鍵命令 |
| System Database Directory | 總目錄,記錄所有可連接資料庫(本地/遠端) | 實例 | `db2 list db directory`、`db2 catalog db ... as ... at node ...` |
| Local Database Directory | 本地資料庫詳細資訊(路徑等) | 資料庫內部 | `db2 list db directory on `(path 來自系統目錄) |
| Node Directory | 遠端節點連通資訊(TCP/IP:主機/IP、埠號) | 實例 | `db2 list node directory`、`db2 catalog tcpip node ... remote ... server ...` |
| DCS Directory | 主機資料庫連通資訊(zSeries/iSeries,需 DB2 Connect) | 實例 | `db2 list dcs directory`、`db2 catalog dcs db ... as ...` |
註:`catalog` 指令主要用於遠端資料庫登錄;本地資料庫 `CREATE DATABASE` 會自動建立條目。
6. 資料庫 —— 封閉獨立單元
- 跨資料庫查詢不被允許(除非使用 Information Integrator)。
- `CREATE DATABASE` 為命令而非 SQL,執行時自動建立配置檔、表空間、日誌、緩衝池。
7. 表空間 —— 邏輯表與物理容器中介層
- 關聯特定緩衝池與容器(檔案/目錄/原始裝置)。
- 建庫自動建立三大系統表空間:
SYSCATSPACE(目錄/元資料)、TEMPSPACE1(系統臨時/排序/連接工作區)、USERSPACE1(使用者表預設,可刪除)。
- 可用 `CREATE TABLESPACE` 顯式建立使用者表空間。
8. 表、索引、LOB
- 表 = 無序列集;索引 = 有序指標(效能/唯一性);LOB = 影音/掃描文件大物件。皆駐留於表空間。
9. 日誌 —— 恢復基石
- 記錄每一筆資料庫操作,故障時將資料庫恢復至一致性點。
10. 緩衝池 —— 效能調優核心
- 所有索引/資料頁(除 LOB)必經之記憶體區域,主要快取。調優首選對象。
案例研究:新任 DBA 第一天熟悉系統
- 登入開發機(Windows 2000),開啟 CLP。
- `db2ilist` 列出所有實例。
- `db2 get instance` 確認當前實例,或 `set DB2INSTANCE=...` 切換。
- `db2set -all` 檢視註冊表變數。
- `db2 get dbm cfg` 檢視實例配置(如 `INTRA_PARALLEL`、`MAXAGENTS`)。
- `db2 list db directory` 查看系統目錄,辨識本地/遠端資料庫。
- 對目標資料庫 `db2 get db cfg for ` 檢視資料庫配置(如 `LOGFILSIZ`、`NUM_IOCLEANERS`)。
- `db2 list tablespaces` 查看表空間與容器分佈。
- `db2 list tables` 列出使用者表。
- `db2pd -db -bufferpools` 觀察緩衝池命中率與大小。
透過這套標準化檢視流程,新手也能快速掌握陌生 DB2 環境全貌,為後續管理、調優、遷移奠定堅實基礎。