分布式,分区

--范围分区
create table  b(
bid number(4),
bname varchar2(10),
bsal number(8))
partition by range(bsal)(
partition p2000 values less than (2000),
partition p10000 values less than(10000),
partition pmax values less than(MAXVALUE))

--插入,自动放入分区
insert into b values(1,'zhangsan',1999);

--查询指定分区 
select * from b partition(p2000);

--hash分区
 create table c(
 cid number(4),
 cname varchar2(10),
 cage number(2))
 partition by hash(cname)(
   partition p1,
   partition p2
 )
--hash分区2
 create table d(
 cid number(4),
 cname varchar2(10),
 cage number(2))
 partition by hash(cname)
 partitions 2

--列表
 create table e(
 eid number(4),
 ename varchar2(10),
 edept varchar2(10)
 )
 partition by list(edept)(
  partition leader values('项目经理','技术经理'),
  partition dev values('测试工程师','软件工程师'),
  partition dev values(DEFAULT)
 )

--组合分区
--按工作时间范围分区后,再分区中再按列表进行分区
create table f(
fid number(4),
fname varchar2(10),
fdept varchar2(10),
fdate date
)
partition by range(fdate)
subpartition by list(fdept)
subpartition template(
 subpartition leader values('项目经理','技术经理'),
 subpartition dev values('测试工程师','软件工程师')
)
(
   partition p1 values less than(to_date('2008/01/01','yyyy/mm/dd')),
     partition p2 values less than(to_date('2009/01/01','yyyy/mm/dd')),
       partition p3 values less than(to_date('2010/01/01','yyyy/mm/dd'))
)
--查询HASH分区的时候不用指定分区,因为根本不知道数据在哪一个分区,
--系统会算出HASH值再确定在哪个分区查

--删除分区中的内容
delete b partition (pmax)
--删除分区: 在范围分区中删除一个分区,分区中的内容也会消失
 alter table b drop partition pmax;
--添加分区:在范围分区中加入一个20000的分区
alter table b add partition p20000 values less than(20000);
--合并分区,合并后,以范围最大的为上限,是list就是整合集合
alter table b merge partitions p2000,p10000 into partition p12000
--分区改名
alter table b rename partition p12000 to p10000 
--查看一张表的分区,表名要大写
select table_name,partition_name from user_tab_partitions where table_name='B'

 

posted @ 2012-10-19 12:15  邹晟  阅读(277)  评论(0编辑  收藏  举报