首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 表頁大小線上轉換操作指南

     編輯:DB2 教學

前言

隨著業務發展,DB2 用戶常面臨表大小、欄位數或列長度超出現有頁大小限制的問題。由於表創建後頁大小無法直接修改,必須重建表。若系統不允許長時間鎖表,可採用本文介紹的「線上」轉換方案,將不可用時間縮減至最小。

頁大小與限制對照表

DB2 表空間與緩衝池支援 4K、8K、16K、32K 四種頁大小,對應的最大限制如下:

頁大小最大欄位數單列最大長度 (Bytes)表最大大小
4K5004,00564 GB
8K1,0128,101128 GB
16K1,01216,293256 GB
32K1,01232,677512 GB

線上轉換操作步驟

  1. 準備目標表空間與緩衝池
    若無所需頁大小的表空間或緩衝池,先行建立。
  2. 取得原表 DDL
    使用 db2look 工具導出建表語句:
    db2look -d <資料庫> -e -tw <表名> -o <輸出檔>
    修改輸出檔,指定新表名並指向目標表空間。
  3. 建立新表
    執行修改後的 DDL 腳本,在目標表空間建立結構相同的新表。
  4. 資料遷移
    db2 "insert into <新表> select * from <舊表>"
  5. 刪除舊表
    db2 "drop table <舊表>"
    此步驟執行期間應用程式將短暫無法存取該表資料。
  6. 重命名新表
    db2 "rename table <新表> to <舊表>"
  7. 恢復應用存取
    完成重命名後,新表即以原表名對外服務,頁大小已成功轉換。

注意事項

上述流程假設資料庫中不存在相依於該表的物件(如視圖、觸發器、外鍵等)。若有相依物件,需先保存其 DDL,移除相依關係,完成刪除/重命名後再重建相依物件。

總結

此方案僅在步驟 4~5 的極短時窗內鎖表,其餘時間資料持續可讀寫,滿足高可用性需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved