資料庫表的線上重定義

xz43發表於2010-11-22
以下是我個人在最佳化資料庫時,透過資料庫提供的線上重定義特性,將一個普通的資料表,定義為分割槽表的方法,步驟如下,希望對需要這麼做的人有幫助。
 
1、在裸裝置上劃新塊,並新建需要的tablespace。
 
2、選擇或新增資料庫表上的分割槽鍵,對於新增欄位需要初始化鍵值。
 
3、建立需要重定義表T的中間表T2(按分割槽鍵分割槽的分割槽表),要求欄位名及型別完全一直,其他包括主鍵、索引、約束什麼的都不需要在T2上建立。
 
4、對T和T2表執行再線重定義步驟,如下:
--開始線上重定義表,資料同步

exec DBMS_REDEFINITION.START_REDEF_TABLE('MS', 'T', 'T2 ');

declare

  ret number;

begin 

  --資料庫表之間的約束同步

  dbms_redefinition.copy_table_dependents('MS', 'T', ' T2',1,true,true,true,false,ret);

end;

/

--同步兩個表之間的資料

exec dbms_redefinition.sync_interim_table('MS', 'T', ' T2');

--完成線上重定義

exec DBMS_REDEFINITION.FINISH_REDEF_TABLE('MS', 'T', 'T2');

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-678636/,如需轉載,請註明出處,否則將追究法律責任。

相關文章