Oracle 分区攻略(二)

   为了应对不同的分区情况,普通的分区不足以满足日益增长的系统需求。所以我们不仅仅有好的分区结构,而且也要很好的维护我们的分区。

混合分区:
create table TRACK  (
   TRACK_ID           NUMBER(20)                      not null,  
   COMP_CDE           VARCHAR2(6),
   TRACK_TM           DATE                            not null,
   CAR_NO             VARCHAR2(50) 
)partition by range(TRACK_TM)
subpartition by list(COMP_CDE)
(
             partition P_2009_11 values less than (to_date('2009-12-01','yyyy-MM-dd'))
             (
                       subpartition P_2009_11_P1013 values('P1013')
             )
);
--添加子分区
alter table TRACK 
modify partition P_2005_01
add subpartition P_2005_01_P1017 values('P1017');

--添加分区
alter table TRACK add partition P_2005_04 values less than(to_date('2005-05-01','yyyy-MM-dd'))
(
    subpartition P_2005_04_P1013 values('P1013'),
    subpartition P_2005_04_P1013 values('P1014'),
    subpartition P_2005_04_P1013 values('P1015'),
    subpartition P_2005_04_P1013 values('P1016')
)

--删除子分区
alter table TRACK drop subpartition p_2005_01_p1017;

--删除分区
alter table TRACK drop partition p_2005_04;


分区维护操作:
drop table sales;
create table sales
(SaleNo NUMBER(5),  
SaleDate CHAR(8)) 
PARTITION BY RANGE(SaleDate) 
(PARTITION nov06 VALUES LESS THAN (20061201) TABLESPACE ts1,
 PARTITION dec06 VALUES LESS THAN (20070101) TABLESPACE ts2,
 PARTITION jan07 VALUES LESS THAN (20070201) TABLESPACE ts3,
 PARTITION feb07 VALUES LESS THAN (20070301) TABLESPACE ts4,
 PARTITION mar07 VALUES LESS THAN (20070401) TABLESPACE ts1)
;
select table_name,partition_name,high_value from user_tab_partitions where table_name='SALES';

--增加分区
ALTER TABLE salesADD PARTITION apr07 VALUES LESS THAN (20070501)TABLESPACE ts2;
--删除分区
ALTER TABLE sales DROP PARTITION Nov06;
--合并分区
ALTER TABLE salesMERGE PARTITIONS jan07,feb07 INTO PARTITION jan_feb07;
--拆分分区
ALTER TABLE sales SPLIT PARTITION jan_feb07AT (20070201)
INTO (PARTITION jan07 TABLESPACE ts2,
      PARTITION feb07 TABLESPACE ts1);
--分区迁移
ALTER TABLE sales MOVE PARTITION jan07TABLESPACE ts3;
--分区交换
ALTER TABLE sales EXCHANGE PARTITION feb07WITH TABLE sales_feb07;
--分区截断
ALTER TABLE sales TRUNCATE PARTITION jan07;


猜你喜欢

转载自dacoolbaby.iteye.com/blog/1635166