當(dāng)前位置:首頁(yè)文章首頁(yè) 新聞中心 業(yè)務(wù)咨訊

在線改變DB2數(shù)據(jù)庫(kù)頁(yè)大小的實(shí)現(xiàn)

作者:  來(lái)源:  發(fā)布時(shí)間:2012-1-31 11:10:02  點(diǎn)擊:

為實(shí)現(xiàn)在對(duì)DB2頁(yè)大小進(jìn)行改變的過(guò)程中,表中的數(shù)據(jù)仍然能被訪問(wèn)的這種“ 在線” 頁(yè)大小的轉(zhuǎn)換,可按如下步驟實(shí)現(xiàn)進(jìn)行在線改變DB2頁(yè)大小操作:

 

1)如果沒(méi)有需要使用的頁(yè)大小的表空間或緩沖池存在,應(yīng)首先創(chuàng)建所需頁(yè)大小的緩沖池和表空間。

 

2)可使用DB2LOOK工具獲取創(chuàng)建表的DDL語(yǔ)句,如:

 

db2look -d <數(shù)據(jù)庫(kù)名> -e -tw <表名> -o <輸出文件名>

 

修改輸出文件,以便將一個(gè)表名不同于原表的新表創(chuàng)建在具有所需頁(yè)大小的表空間中。

 

3)利用修改后的 DDL 腳本創(chuàng)建一個(gè)與原表相同的新表。

 

4)使用如下語(yǔ)句將原表中的數(shù)據(jù)插入到新表中:

 

db2 "insert into <新表表名> (select * from <原表表名>)"

 

5)刪除原表:

 

db2 "drop table <原表表名>"

 

此操作后,應(yīng)用對(duì)表中數(shù)據(jù)暫時(shí)無(wú)法訪問(wèn)。

 

6)將新表表名更名為原表表名:

 

db2 "rename table <新表表名> to <原表表名>"

 

7)恢復(fù)應(yīng)用對(duì)表中數(shù)據(jù)的訪問(wèn)。

 

此時(shí)更名為原表名的新表的頁(yè)大小已從原來(lái)的頁(yè)大小轉(zhuǎn)換為所需頁(yè)大小,從而滿足了用戶對(duì)該表大小上的新需求。表數(shù)據(jù)僅在整個(gè)過(guò)程的步驟4)到5)的瞬間不可訪問(wèn),其它時(shí)間表中的數(shù)據(jù)均處于可訪問(wèn)的“ 在線” 狀態(tài)。

 

應(yīng)注意的是,上述步驟僅適用于數(shù)據(jù)庫(kù)中不存在依賴于該表的對(duì)象的情況,如果數(shù)據(jù)庫(kù)中存在有依賴于該表的對(duì)象,應(yīng)在保存有這些對(duì)象的DDL語(yǔ)句后,首先除去這些依賴關(guān)系,再進(jìn)行原表的刪除和新表更名操作,然后重建這些依賴關(guān)系。

文章評(píng)論

軟件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z