DB2資料庫從安裝佈署到生產運行,其效能、穩定性、可維護性 80% 決定於**設計階段**。本文從安裝語言與字符集選擇、資料庫對象大小量評估與儲存規劃、備份還原策略設計三大維度,提供落地可執行的設計指南。
| 場景 | 推薦字符集 | 代碼頁 | 備註 |
|---|---|---|---|
| 純英文/西歐語系 | ISO8859-1 / UTF-8 | 819 / 1208 | 單位組,空間效率高 |
| 繁體中文(台灣/港澳) | UTF-8 | 1208 | 支援全字庫、Emoji、跨語系,現代首選 |
| 簡體中文(大陸/新加坡) | UTF-8 | 1208 | 同上 |
| 日文/韓文/多語混雜 | UTF-8 | 1208 | 唯一無損方案 |
| 舊系統相容(Big5/GBK) | BIG5 / GBK / EUC-CN | 950 / 1386 / 1383 | 僅限舊應用無法改造時使用,新建嚴禁 |
核心原則: **資料庫字符集必須為所有客戶端字符集的超集**。若客戶端使用 UTF-8、Big5、GBK 混雜,資料庫**必須是 UTF-8**,否則轉換會產生替代字元()導致資料損毀。
建立語法:
CREATE DATABASE MYDB AUTOMATIC STORAGE YES
ON '/db2data'
USING CODESET UTF-8 TERRITORY TW
COLLATE USING SYSTEM;
將 DB2 視為智慧倉庫:表空間 = 貨架區、表/索引 = 貨物、緩衝池 = 叉車、I/O通道 = 傳送帶。科學規劃三步走:
| 對象類型 | 預估大小 | 儲存策略 | 硬體建議 |
|---|---|---|---|
| 大型事實表(>10億列) | TB 級 | 獨立表空間 + 範圍分區 + 獨立緩衝池 (BP_16K/32K) | NVMe SSD / 分級儲存熱資料 |
| 大型索引 | 百 GB | **索引與資料分離**:`INDEX IN` 子句指向不同表空間/磁碟 | 高 IOPS 裝置 |
| 中小型維度/查閱表 | < 1 GB | 共用表空間 (USERSPACE1) + 自動儲存 | SATA SSD / HDD |
| 臨時/暫存表 | 變動大 | 系統暫存表空間 (TEMPSPACE1) 或使用者暫存表空間 | 記憶體檔案系統 / tmpfs |
黃金法則: **大表獨享表空間、大索引獨享磁碟、小表共享表空間**。
實作手段:`ALTER TABLESPACE ... BUFFERPOOL BP_HOT`、`CREATE BUFFERPOOL BP_HOT SIZE 50000 PAGESIZE 16K`
命名規範範例:
-- 表空間:<模組>_<類型>_<序號>
TS_SALES_DATA_01 -- 銷售模組資料表空間 01
TS_SALES_IDX_01 -- 銷售模組索引表空間 01
TS_FIN_RPT_01 -- 財務模組報表表空間
-- 表:<模組>_<實體>_<後綴>
T_SALES_ORDER_HDR -- 銷售訂單主檔
T_SALES_ORDER_DTL -- 銷售訂單明細
I_SALES_ORD_CUST_IDX -- 客戶索引
效益:
- `LIST TABLESPACES` 即可按前綴過濾模組
- 權限管理:`GRANT USE OF TABLESPACE TS_SALES_DATA_01 TO ROLE SALES_RW`
- 容量監控:按模組聚合表空間使用率
- 遷移拆分:模組級遷移只需處理相關前綴物件
痛點:測試過程產生垃圾資料,交付生產需乾淨庫。
方案:**基線備份 + 還原交付**
DROP DB TESTDB;
RESTORE DB GOLD_IMAGE INTO TESTDB FROM /backup TAKEN AT REPLACE EXISTING;
ROLLFORWARD DB TESTDB TO END OF LOGS AND STOP; # 若有日誌
| 層級 | 頻率 | 保留 | 工具/指令 | RTO/RPO目標 |
|---|---|---|---|---|
| 完整離線 | 週/月 | 3-6個月 | `BACKUP DB ... COMPRESS INCLUDE LOGS` | RPO=0, RTO=小時級 |
| 完整線上 | 日 | 7-14天 | `BACKUP DB ... ONLINE COMPRESS INCLUDE LOGS` | RPO=分鐘, RTO=小時 |
| 增量/差異 | 小時/4小時 | 3-7天 | `BACKUP DB ... ONLINE INCREMENTAL/DELTA` | RPO=小時, RTO=小時 |
| 日誌歸檔 | 連續 | 30-90天 | `LOGARCHMETH1=TSM/LOGARCHMETH1=DISK:/archlogs` | RPO=秒, RTO=分鐘 |
關鍵配置: `LOGRETAIN=RECOVERY`、`USEREXIT=ON`、`TRACKMOD=ON`(啟用增量追蹤)
當資料庫達 TB 級,全庫還原耗時過長。針對核心業務表空間:
-- 備份核心表空間
BACKUP DB PROD TABLESPACE (TS_SALES_DATA_01, TS_SALES_IDX_01) ONLINE TO /backup/ts_sales
-- 還原單一表空間(資料庫需處於 Rollforward Pending)
RESTORE DB PROD TABLESPACE (TS_SALES_DATA_01) FROM /backup/ts_sales TAKEN AT
ROLLFORWARD DB PROD TO END OF LOGS AND STOP TABLESPACE (TS_SALES_DATA_01) ONLINE
前提:資料庫啟用歸檔日誌、增量追蹤;表空間為 DMS/自動儲存。
良好的設計不是一次性文檔,而是隨業務演進持續迭代的活體資產。從第一天開始投資設計,將為未來五年節省無數個加班夜晚。