隨著業務發展,DB2 用戶常面臨表大小、欄位數或列長度超出現有頁大小限制的問題。由於表創建後頁大小無法直接修改,必須重建表。若系統不允許長時間鎖表,可採用本文介紹的「線上」轉換方案,將不可用時間縮減至最小。
DB2 表空間與緩衝池支援 4K、8K、16K、32K 四種頁大小,對應的最大限制如下:
| 頁大小 | 最大欄位數 | 單列最大長度 (Bytes) | 表最大大小 |
|---|---|---|---|
| 4K | 500 | 4,005 | 64 GB |
| 8K | 1,012 | 8,101 | 128 GB |
| 16K | 1,012 | 16,293 | 256 GB |
| 32K | 1,012 | 32,677 | 512 GB |
db2look 工具導出建表語句:db2look -d <資料庫> -e -tw <表名> -o <輸出檔>db2 "insert into <新表> select * from <舊表>"db2 "drop table <舊表>"db2 "rename table <新表> to <舊表>"上述流程假設資料庫中不存在相依於該表的物件(如視圖、觸發器、外鍵等)。若有相依物件,需先保存其 DDL,移除相依關係,完成刪除/重命名後再重建相依物件。
此方案僅在步驟 4~5 的極短時窗內鎖表,其餘時間資料持續可讀寫,滿足高可用性需求。