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);
備注:對於范圍分區(有默認分區的)就不能添加
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);