這周很平靜,沒有客戶的紛紛擾擾。
前一陣子寫了一些有關資料表的壓縮的東西,我現在感覺把資料壓縮了遷移走,或者隨即轉移走也是一種不錯的辦法。
現在有這樣一張表:
CREATE TABLE TABLE_1 ( MONTH_ID VARCHAR2(10), AREA_ID VARCHAR2(10), SERI NUMBER)PARTITION BY RANGE(MONTH_ID)subpartition by list (AREA_ID) subpartition template( subpartition subpart_1 values ('1'), subpartition subpart_2 values ('2'), subpartition subpart_3 values ('3'), subpartition subpart_4 values ('4'), subpartition subpart_5 values ('5'), subpartition subpart_6 values ('6'), subpartition subpart_7 values ('7'), subpartition subpart_8 values ('8'), subpartition subpart_9values ('9'), subpartition subpart_10 values ('10'), subpartition subpart_default values (default) )( PARTITION PART_1 VALUES LESS THAN('201210'), PARTITION PART_2 VALUES LESS THAN('201211'), PARTITION PART_3 VALUES LESS THAN('201212'))
分區的儲存是這樣的:
現在可以將這個表的month_id為“201209”的資料移轉到users資料表空間去:
ALTER TABLE table_1 MOVE PARTITION part_1 TABLESPACE USERS;
出錯了,在網上查了一下應該要先把子分區移走。
ALTER TABLE table_1 MOVE SUBPARTITION part_1_SUBPART_1 TABLESPACE USERS;ALTER TABLE table_1 MOVE SUBPARTITION part_1_SUBPART_2 TABLESPACE USERS;ALTER TABLE table_1 MOVE SUBPARTITION part_1_SUBPART_3 TABLESPACE USERS;ALTER TABLE table_1 MOVE SUBPARTITION part_1_SUBPART_4 TABLESPACE USERS;...ALTER TABLE table_1 MOVE SUBPARTITION part_1_SUBPART_10 TABLESPACE USERS;
然後在執行下面的:
ALTER TABLE table_1 MODIFY DEFAULT ATTRIBUTES FOR PARTITION part_1TABLESPACE USERS;
這是結果:
現在這個分區被轉移到了users中。
如果沒有子分區會是什麼樣?重建這個表,這次不要子分區,只是按照month_id分區,然後執行轉移語句:
ALTER TABLE table_1 MOVE PARTITION part_1 TABLESPACE USERS;
直接成功。這就說明了轉移帶有子分區的分區表的時候,應該從最低級的子分區開始轉移,然後轉移上一級的分區。
那麼壓縮呢,將上面這個表的part_1壓縮,語句如下:
ALTER TABLE table_1 MOVE PARTITION part_1 COMPRESS;
結果如下:
建立有子分區的表,然後執行剛才的語句:
相同的問題再次出現。也就是說得把子分區先壓縮了。但是我今天看到了一個更好用的語句:
ALTER TABLE table_1 MODIFY PARTITION part_1 COMPRESS;
執行以後結果:
這樣就好了。
今天建立表分區的時候有點忘了語句的寫法,這是不對的,這裡記錄一下:
CREATE TABLESPACE data_warehouse DATAFILE 'D:\app\user\oradata\PC1\STORAGE2.DBF' SIZE 50M AUTOEXTEND ON NEXT 50M MAXSIZE 2048M;
將使用者預設資料表空間改成剛才建立的資料表空間:
ALTER USER wings DEFAULT TABLESPACE data_warehouse;
歡迎各位oracle愛好者加入我們的交流群:120244471。