程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 在線對DB2表頁大小的轉換操作

在線對DB2表頁大小的轉換操作

編輯:DB2教程

為了滿足DB2用戶創建的表在大小、字段數或行長度上的新需求,時會有改變現有表的頁大小。下面將為您介紹如何在線對在線對DB2表頁大小的轉換操作,供您參考,希望對您有所幫助。

產品:DB2 UDB

平台:跨平台

版本:v8.1,v8.2

對於DB2的而言,其表的最大大小,可包含的最多字段數及其每行記錄的最大長度與表的頁大小有關。
所有創建在表空間中的表必須具有與表空間相同的頁大小,而DB2的緩沖池或表空間的頁大小可有4K、8K、16K和32K四種選擇,相對應的字段數、行長和表大小如下: 
              4K頁大小  8K頁大小  16K頁大小  32K頁大小
表的最多字段數 500       1012      1012       1012
表每行最大長度 4005      8101      16293      32677
表的最大大小   64G       128G      256G       512G

由於這一原因,用戶有時會有改變現有表的頁大小以滿足表在大小、字段數或行長度上的新需求。因為表在創建之後頁大小就無法改變了,所以必須重新創建符合頁大小要求的新表。

如果所使用的數據庫系統不允許由於刪除原表,再重建新表所造成的長時間不能訪問表中數據的結果,可采用這裡介紹的方法,對表實現“在線”頁大小的轉換操作。

為實現在對表的頁大小進行改變的過程中,表中的數據仍然能被訪問的這種“在線”頁大小的轉換,可按如下步驟進行操作:

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語句後,首先除去這些依賴關系,再進行原表的刪除和新表更名操作,然後重建這些依賴關系。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved