Oracle 分区表 实验数据

《分区表实验数据》


--删除表空间
drop  tablespace a including contents and datafiles cascade constraints;
drop  tablespace b including contents and datafiles cascade constraints;
drop  tablespace c including contents and datafiles cascade constraints;
drop  tablespace d including contents and datafiles cascade constraints;


--建立表空间(Windows)
create  tablespace a datafile 'C:\app\Administrator\oradata\win\a.DBF' size 10m autoextend on next 10m maxsize unlimited;
create  tablespace b datafile 'C:\app\Administrator\oradata\win\b.DBF' size 10m autoextend on next 10m maxsize unlimited;
create  tablespace c datafile 'C:\app\Administrator\oradata\win\c.DBF' size 10m autoextend on next 10m maxsize unlimited;
create  tablespace d datafile 'C:\app\Administrator\oradata\win\d.DBF' size 10m autoextend on next 10m maxsize unlimited;


--删表
drop table P;
--建表
create table p (id number,name varchar2(20)) partition by range (id)
(
partition p1 values less than (10) tablespace a,
partition p2 values less than (20) tablespace b,
partition p3 values less than (30) tablespace c,
partition pmax values less than (maxvalue) tablespace d
);



--截断表
truncate table p reuse storage;
--删除分裂分区
alter table p drop partition (p4);
--重建索引
drop index p_prefix_local;
drop index p_unprefix_local;
drop index p_global;
drop index p_normal;
--普通数据
insert into p values(1,'p1');
insert into p values(2,'p1');
insert into p values(3,'p1');
insert into p values(11,'p2');
insert into p values(12,'p2');
insert into p values(13,'p2');
insert into p values(21,'p3');
insert into p values(22,'p3');
insert into p values(23,'p3');
commit;
--超额数据
insert into p values(31,'p4/max');
insert into p values(32,'p4/max');
insert into p values(33,'p4/max');
insert into p values(91,'pmax');
insert into p values(92,'pmax');
insert into p values(93,'pmax');
commit; 


--------------------------------------------------------
--全局前缀不分区(也叫普通索引)
drop index p_prefix_local;
drop index p_unprefix_local;
drop index p_global;
drop index p_normal;
  create index p_normal on p(id) ;
select i.status,i.* from all_indexes i where index_name='P_NORMAL';
  


--全局前缀分区索引(是不是前缀和构建的列相关)
drop index p_prefix_local;
drop index p_unprefix_local;
drop index p_global;
drop index p_normal;
  create index p_global on p(id) global partition by RANGE(id) 
(
partition p1 values less than (10) tablespace a,
partition p2 values less than (20) tablespace b,
partition p3 values less than (30) tablespace c,
partition pmax values less than (maxvalue) tablespace d
);
select i.status,i.* from all_ind_partitions i where index_name like 'P%';




--本地前缀索引(索引列以分区键开头)
drop index p_prefix_local;
drop index p_unprefix_local;
drop index p_global;
drop index p_normal;
  create index p_prefix_local on p(id) local;
select i.status,i.* from all_ind_partitions i where index_name like 'P%';




--本地非前缀索引(索引列不是以分区键开头)
drop index p_prefix_local;
drop index p_unprefix_local;
drop index p_global;
drop index p_normal;
  create index p_unprefix_local on p(name) local;
select i.status,i.* from all_ind_partitions i where index_name like 'P%';  
---------------------------------------------------


--分裂
alter table p split partition pmax  at(40) into (partition p4 tablespace a,partition pmax);
select * from p partition (p4);
select i.status,i.* from all_ind_partitions i where index_name like 'P%';
select i.status,i.* from all_indexes i where index_name='P_NORMAL';


--删除分裂
alter table p drop partition (p4);
select i.status,i.* from all_ind_partitions i where index_name like 'P%';
select i.status,i.* from all_indexes i where index_name='P_NORMAL';


--查询
select * from p;
select * from p partition (p4);
select * from all_tab_partitions where table_name like 'P%';
select * from all_ind_partitions where index_name like 'P%';
select i.status,i.* from all_indexes i where index_name='P_NORMAL';


--重建索引
alter index p_normal rebuild;
alter index P_PREFIX_LOCAL rebuild partition p4;


--split分裂的原理
移动分区表,相当于DDL的move


--结论
1.全局前缀不分区索引:
DDL某个分区后索引会失效;重建语句alter index p_normal rebuild;
split某个分区会使索引失效,重建语句alter index p_normal rebuild;
2.全局前缀分区索引:
DDL某个分区后索引会失效;
split某个分区会使索引失效,重建时需要一个一个分区的重建,所以建议删除新建
3.本地前缀索引:
DDL某个分区后,该分区的索引会失效;
建立索引后再分裂会使MAX分区和新分区的索引失效,需要单独重建alter index P_PREFIX_LOCAL rebuild partition p4;
4.本地非前缀索引:
DDL某个分区后,该分区的索引会失效;
建立索引后再分裂会使MAX分区和新分区的索引失效,需要单独重建alter index P_UNPREFIX_LOCAL rebuild partition p4;




--清理实验数据(数据文件有可能还会存留于磁盘上,必要时手动删除)
drop index p_prefix_local;
drop index p_unprefix_local;
drop index p_global;
drop index p_normal;
drop table P;
drop  tablespace a including contents and datafiles cascade constraints;
drop  tablespace b including contents and datafiles cascade constraints;
drop  tablespace c including contents and datafiles cascade constraints;
drop  tablespace d including contents and datafiles cascade constraints;


《完》

 

发布了20 篇原创文章 · 获赞 17 · 访问量 1888

猜你喜欢

转载自blog.csdn.net/zzt_2009/article/details/80036697
今日推荐