oracel表的分區

1,創建表及分區

create table test
(
ID	VARCHAR2(32),
MONTHS	VARCHAR2(40),
USERID	VARCHAR2(20)
)
partition by list(MONTHS)  
(  
  partition m201404 values('201404'),
  partition m201405 values('201405')
)

2,插入數據

insert into test values('1','201404','1');
insert into test values('2','201405','2');
insert into test values('3','201407','3');

其中,前兩條可以成功。第三條失敗   ORA-14400: 插入的分區關鍵字未映射到任何分區

3,添加新的分區

alter table test add partition m201406 values('201407');

4,然後再插入第三條數據成功

最後查詢:

select * from TEST;// 所有數據
select * from TEST partition(m201404);//分區m201404裏所有數據
select * from TEST partition(m201405);
select * from TEST partition(m201406);

5,創建表及列分區並添加默認分區 後期添加新的分區

create table test  
(  
ID  VARCHAR2(32),  
MONTHS  VARCHAR2(40),  
USERID  VARCHAR2(20)  
)  
partition by list(MONTHS)    
(    
  partition m201404 values('201404'),  
  partition m201405 values('201405'),
  partition mdefault values(default)
) 
// 刪除mdefault分區
alter table test drop partition mdefault;
// 添加新的分區後再加上mdefault分區
alter table test add partition m201406 values('201407');
alter table test add partition mdefault values(default);

6,分區表的查詢

select table_name,partition_name from DBA_TAB_PARTITIONS where table_owner='RPT';

備註:對於範圍分區(有默認分區的)就不能添加

create table test
(
ID  VARCHAR2(32),
MONTHS  VARCHAR2(40),
USERID  VARCHAR2(20)
)
partition by range(MONTHS)
(  
  partition m201404 values less than (201405),
  partition m201405 values less than (201406),
  partition mother values less than (maxvalue)
)
//下面報錯:ORA-14074: 分區界限必須調整爲高於最後一個分區界限

alter table test add partition m201406 values less than (201407);

將分區的mother去掉就可以了

create table test
(
ID  VARCHAR2(32),
MONTHS  VARCHAR2(40),
USERID  VARCHAR2(20)
)
partition by range(MONTHS)
(  
  partition m201404 values less than (201405),
  partition m201405 values less than (201406)
)

alter table test add partition m201406 values less than (201407);


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章