為實現在對DB2頁大小進行改變的過程中,表中的數據仍然能被訪問的這種“ 在線” 頁大小的轉換,可按如下步驟實現進行在線改變DB2頁大小操作:
1)如果沒有需要使用的頁大小的表空間或緩沖池存在,應首先創建所需頁大小的緩沖池和表空間。
2)可使用DB2LOOK工具獲取創建表的DDL語句,如:
db2look -d <數據庫名> -e -tw <表名> -o <輸出文件名>
修改輸出文件,以便將一個表名不同於原表的新表創建在具有所需頁大小的表空間中。
3)利用修改後的 DDL 腳本創建一個與原表相同的新表。
4)使用如下語句將原表中的數據插入到新表中:
db2 "insert into <新表表名> (select * from <原表表名>)"
5)刪除原表:
db2 "drop table <原表表名>"
此操作後,應用對表中數據暫時無法訪問。
6)將新表表名更名為原表表名:
db2 "rename table <新表表名> to <原表表名>"
7)恢復應用對表中數據的訪問。
此時更名為原表名的新表的頁大小已從原來的頁大小轉換為所需頁大小,從而滿足了用戶對該表大小上的新需求。表數據僅在整個過程的步驟4)到5)的瞬間不可訪問,其它時間表中的數據均處於可訪問的“ 在線” 狀態。
應注意的是,上述步驟僅適用於數據庫中不存在依賴於該表的對象的情況,如果數據庫中存在有依賴於該表的對象,應在保存有這些對象的DDL語句後,首先除去這些依賴關系,再進行原表的刪除和新表更名操作,然後重建這些依賴關系。