欢迎光临郝学武的blog。

ORACLE分区表

Posted on 2008-12-21 10:17 陕西BOY 阅读(233) 评论(0)  编辑  收藏

在应用系统中,如果某个表的数据量很大时,为了保持数据库的性能,一般都考虑使用分区表,分区表主要有三种分区方式,分别是范围(RANGE)、列表(LIST)、哈希(HASH)分区,根据表的特性选择分区类型,一般情况下用RANGE和LIST两种就够了

.................


下面就只说RANGE和LIST两种分区表的创建和管理(列表LIST分区是9I之后才有,8I没有的)

1、创建分区

--创建范围(RANGE)分区表的语法:
create table test_tbl(emp_name varchar2(50), emp_loc varchar2(50), emp_hire_date date)
partition by range(emp_hire_date)(
partition p_hire_date1 values less than (to_date('2000-01-01','yyyy-mm-dd')) tablespace t_hire_date1,
partition p_hire_date2 values less than (to_date('2001-01-01','yyyy-mm-dd')) tablespace t_hire_date2,
partition p_hire_date3 values less than (to_date('2002-01-01','yyyy-mm-dd')) tablespace t_hire_date3
...
partition p_hire_dateN values less than (maxvalue) tablespace t_hire_dateN
)

--创建列表(LIST)分区表的语法:
create table test_tbl(emp_name varchar2(50), emp_loc varchar2(50), emp_hire_date date)
partition by list(emp_loc)(
partition p_loc1 values ('GZ') tablespace t_hire_date1,
partition p_loc2 values ('BJ') tablespace t_hire_date2,
partition p_loc3 values ('SH') tablespace t_hire_date3
)

2、管理分区

--增加分区(如果表分区有MAXVALUE,不能再增加分区)
alter table test_tbl add partition p_hire_date4 values less than(to_date('2002-06-01','yyyy-mm-dd'))

--删除分区
alter table test_tbl drop partition p_hire_date4

--截断分区(删除分区的数据)
alter table test_tbl truncate partition p_hire_date4

--拆分分区(拆分后,数据以1999-01-01为临界分别存放在两个分区,p_hire_date1不再存在)
alter table test_tbl split partition p_hire_date1 at(to_date('1999-01-01','yyyy-mm-dd'))
into
(
partition p_hire_date11,
partition p_hire_date12
)

--合并分区(合并后,p_hire_date11和p_hire_date12两个分区就不存在了)
alter table test_tbl merge partitions p_hire_date11,p_hire_date12 into partition p_hire_date1

--交换分区
alter table test_tbl exchange partition p_hire_date1 with table test_tbl2

当要把数据很大的表test_tbl2的数据插入分区表test_tbl中,如果用insert into是很低性能的,最好方法是用交换分区方法。但要注意,交换分区时,当使用without validation时,数据是不验证test_tbl2表的数据是否都能满足分区p_hire_date1的条件


只有注册用户登录后才能发表评论。


网站导航:
 

posts - 17, comments - 65, trackbacks - 0, articles - 28

Copyright © 陕西BOY