ORACLE 線上重新定義表分割槽表重定義為普通表。

huzhichengforce發表於2014-09-22
環境:AIX power 7 128g+ oracle  10G  RAC    
需求:
源表A 目前166G 已經做了分割槽  做的是hash 分割槽,但是目前。表需要做調整 需要用另外一個欄位做列表分割槽。
計劃:
1、將源錶轉化為普通表。
2、將普通錶轉化為分割槽表。
操作:
1、expdp 備份表 166G     大概十幾分鍾就備份完成.

expdp xx/xxxxdirectory=exp_dir dumpfile= xxxx.dmp tables=ADAPTER_ORIGINALDATA logfile= xxxx.log parallel=10

2、備份表的索引ddL
使用工具
3、建立新的表空間

create  tablespace  xxxdatafile ‘xxxxx.dbf’ size 1G autoextend on next 500M maxsize 10g
將表空間賦給使用者
alter   user   adapter   quota   unlimited   on   xxxxx; 

4、建立中間表

CREATE TABLE "ADAPTER"."xxxx"

   (        "EVENTID" CHAR(32) NOT NULL ENABLE,

       "RECORDCLASSIFYING" VARCHAR2(32),

       "RECORDTITLE" VARCHAR2(50),

       "EFFECTIVETIME" DATE,

       "AUTHORORGANIZATION" VARCHAR2(56),

       "SOURCEID" VARCHAR2(32),

       "VERSIONNUMBER" VARCHAR2(10),

       "AUTHOR" VARCHAR2(32),

       "SYSTEMTIME" DATE,

       "UPLOADTIME" DATE,

       "HEADER" VARCHAR2(4000),

       "BODY" BLOB,

       "DOCFORMAT" VARCHAR2(8),

       "ZIPTYPE" VARCHAR2(8),

       "PROCESSFLAG" CHAR(1),

       "ORIGINALBODY" BLOB,

       "MPIPROCESSFLAG" CHAR(1),

       "MPI" VARCHAR2(32),

       "DCID" CHAR(16),

       "CREATETIME" DATE,

       "AUTHORORGANIZATION_TEXT" VARCHAR2(56)

   )  TABLESPACE  xxxxxx;


5、開始重定義

execute dbms_redefinition.start_redef_table('hzwsj','old_table','mid_table');

execute dbms_redefinition.sync_interim_table('hzwsj','old_table','mid_table');

execute dbms_redefinition.finish_redef_table('hzwsj','old_table','mid_table');

6、建立索引

7、完成。

注意:兩個源表和中間表需要相同主鍵。

在重定義過程中 
execute dbms_redefinition.start_redef_table('hzwsj','old_table','mid_table'); 這一步 為轉移資料步驟。
完成後的mid_table 可刪除。
166G 資料 POWER 7 處理器  128G 記憶體  大概需要兩個小時。


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

相關文章