oracle partition

zhengbao_jun發表於2009-03-11

drop table sales1;


--範圍必須越來越大
CREATE TABLE sales1(
year int ,
month int,
day int,
fee number)
PARTITION by range (year,month,day)
(
partition sale1 values less than(1999,02,01) tablespace ts1,
partition sale2 values less than(2000,01,01) tablespace ts2,
partition sale3 values less than(2001,01,01) tablespace ts3,
partition sale4 values less than(2002,01,01) tablespace ts4,
partition sale5 values less than(MAXVALUE,MAXVALUE,MAXVALUE) tablespace ts5
);

--第一種索引
drop index idx_sales1;
create index idx_sales1 on sales1(year);




--第二種索引
drop index idx_sales1;

--ORA-14021: 必須指定所有列的 MAXVALUE
--ORA-14010: 不可以指定索引分割槽的此物理屬性
create index idx_sales1 on sales1(year)
global partition by range(year)
(
partition sale1 values less than(1999) tablespace tsi1,
partition sale2 values less than(2000) tablespace tsi2,
partition sale3 values less than(2001) tablespace tsi3,
partition sale4 values less than(2002) tablespace tsi4,
partition sale5 values less than(MAXVALUE) tablespace tsi5
);



--第三種索引
drop index idx_sales1;
--ORA-14024: LOCAL 索引的分割槽數必須等於基本表的分割槽數(索引分割槽名可以與表分割槽名不一致,不過索引資料怎麼儲存呢?)
CREATE INDEX idx_sales1 ON SALES1  (YEAR)
TABLESPACE EXAMPLE LOCAL
(
PARTITION aSALE1 tablespace tsi1,
PARTITION aSALE2 tablespace tsi2,
PARTITION aSALE3 tablespace tsi3,
PARTITION aSALE4 tablespace tsi4)
;



insert into sales1 values(1999,01,01,1);
--null 插入到maxvalue表空間。
insert into sales1 values(null,null,null,0);

--ORA-14400: 插入的分割槽關鍵字未對映到任何分割槽
insert into sales1 values(2004,01,01,1);


commit;

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

相關文章