Oracle帶區域性分割槽索引的分割槽表刪除舊分割槽新增新分割槽

zhenghaishu發表於2014-09-22

Oracle帶區域性分割槽索引的分割槽表刪除舊分割槽新增新分割槽

 

為了方便測試,所有的實驗步驟都用sys使用者操作。

 

1 建立四個資料表空間(分別放四個季度的資料)

SQL> create tablespace QUR_DT01 logging datafile '/oracle/app/oradata/mytablespace/QUR_DT01.dbf' size 128M autoextend on next 100M maxsize 1024M extent management local;

表空間已建立。

 

SQL> create tablespace QUR_DT02 logging datafile '/oracle/app/oradata/mytablespace/QUR_DT02.dbf' size 128M autoextend on next 100M maxsize 1024M extent management local;

表空間已建立。

 

SQL> create tablespace QUR_DT03 logging datafile '/oracle/app/oradata/mytablespace/QUR_DT03.dbf' size 128M autoextend on next 100M maxsize 1024M extent management local;

表空間已建立。

 

SQL> create tablespace QUR_DT04 logging datafile '/oracle/app/oradata/mytablespace/QUR_DT04.dbf' size 128M autoextend on next 100M maxsize 1024M extent management local;

表空間已建立。

 

2 建立四個索引表空間

SQL> create tablespace QUR_IDX01 logging datafile '/oracle/app/oradata/mytablespace/QUR_IDX01.dbf' size 128M autoextend on next 100M maxsize 1024M extent management local;

表空間已建立。

 

SQL> create tablespace QUR_IDX02 logging datafile '/oracle/app/oradata/mytablespace/QUR_IDX02.dbf' size 128M autoextend on next 100M maxsize 1024M extent management local;

表空間已建立。

 

SQL> create tablespace QUR_IDX03 logging datafile '/oracle/app/oradata/mytablespace/QUR_IDX03.dbf' size 128M autoextend on next 100M maxsize 1024M extent management local;

表空間已建立。

 

SQL> create tablespace QUR_IDX04 logging datafile '/oracle/app/oradata/mytablespace/QUR_IDX04.dbf' size 128M autoextend on next 100M maxsize 1024M extent management local;

表空間已建立。

 

3 建立季度分割槽表

create table t(mydate varchar2(20), amount number) partition by range(mydate)

(

partition p20140101 values less than ('20140101') tablespace QUR_DT01,

partition p20140401 values less than ('20140401') tablespace QUR_DT02,

partition p20140701 values less than ('20140701') tablespace QUR_DT03,

partition p20141001 values less than ('20141001') tablespace QUR_DT04

);

 

驗證:

SQL> SELECT tablespace_name,partition_name FROM dba_tab_partitions where table_name='T';

TABLESPACE_NAME                PARTITION_NAME

------------------------------ ------------------------------

QUR_DT01                       P20140101

QUR_DT02                       P20140401

QUR_DT03                       P20140701

QUR_DT04                       P20141001

 

4 對日期列建立區域性分割槽索引

create index local_date_index on t(mydate) local

(

partition p20140101 tablespace QUR_IDX01,

partition p20140401 tablespace QUR_IDX02,

partition p20140701 tablespace QUR_IDX03,

partition p20141001 tablespace QUR_IDX04

);

索引已建立。

 

驗證:

SQL> select segment_name,partition_name,tablespace_name from dba_segments where segment_name='LOCAL_DATE_INDEX';

SEGMENT_NAME         PARTITION_NAME       TABLESPACE_NAME

-------------------- -------------------- --------------------

LOCAL_DATE_INDEX     P20140101            QUR_IDX01

LOCAL_DATE_INDEX     P20140401            QUR_IDX02

LOCAL_DATE_INDEX     P20140701            QUR_IDX03

LOCAL_DATE_INDEX     P20141001            QUR_IDX04

 

5 刪除第一個分割槽

SQL> alter table t drop partition p20140101;

表已更改。

 

驗證分割槽表:

SQL> SELECT tablespace_name,partition_name FROM dba_tab_partitions where table_name='T';

TABLESPACE_NAME      PARTITION_NAME

-------------------- --------------------

QUR_DT02             P20140401

QUR_DT03             P20140701

QUR_DT04             P20141001

 

驗證分割槽索引:

SQL> select segment_name,partition_name,tablespace_name from dba_segments where segment_name='LOCAL_DATE_INDEX';

SEGMENT_NAME         PARTITION_NAME       TABLESPACE_NAME

-------------------- -------------------- --------------------

LOCAL_DATE_INDEX     P20140401            QUR_IDX02

LOCAL_DATE_INDEX     P20140701            QUR_IDX03

LOCAL_DATE_INDEX     P20141001            QUR_IDX04

這裡可以看出,表分割槽被刪除之後,相應的索引分割槽也自動被刪除。

 

6 新增一個分割槽並更新索引

SQL> alter table t add partition p20150101 values less than('20150101') tablespace QUR_DT01 update indexes (local_date_index(partition P20150101 tablespace QUR_IDX01));

表已更改。

 

驗證分割槽表:

SQL> SELECT tablespace_name,partition_name FROM dba_tab_partitions where table_name='T';

TABLESPACE_NAME      PARTITION_NAME

-------------------- --------------------

QUR_DT02             P20140401

QUR_DT03             P20140701

QUR_DT04             P20141001

QUR_DT01             P20150101

 

驗證分割槽索引:

SQL> select segment_name,partition_name,tablespace_name from dba_segments where segment_name='LOCAL_DATE_INDEX';

SEGMENT_NAME         PARTITION_NAME       TABLESPACE_NAME

-------------------- -------------------- --------------------

LOCAL_DATE_INDEX     P20140401            QUR_IDX02

LOCAL_DATE_INDEX     P20140701            QUR_IDX03

LOCAL_DATE_INDEX     P20141001            QUR_IDX04

LOCAL_DATE_INDEX     P20150101            QUR_IDX01

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

相關文章