Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92484479
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-30 16:17:38

 

表分区允许用户把一个表中的所有行分为几个部分,并将这些部分存储在不同的位置.被分区的表称为分区表,分成的每一部分称为一个分区.
分区表的优点:
*改善表的查询性能,在对表进行分区后,用户执行SQL查询时可以只访问表中的特定分区而非整个表.
*表更容易管理,因为分区表的数据存储在多个部分中,按分区加载和删除数据比在表中加载和删除更容易.
*便于备份和恢复,可以独立地备份和恢复每个分区.
*提高数据安全性,将不同的分区分布在不同的磁盘,可以减小所有分区的数据同时损坏的可能性.
oracle提供的分区方法有4种.
*范围分区
*散列分区
*复合分区
*列表分区
OK,下面写代码了.
*范围分区*:范围分区根据表的某个列或一组列的值范围,决定将该数据存储在哪个分区上.
create table hjin(id number,name varchar2(20),sal number(10),addr varchar2(20))
partition by range(sal)
(
partition p1 values less than (1000),
partition p2 values less than (3000),

partition p3 values less than (5000)
);

*散列分区*:散列分区通过在分区键值上执行一个散列函数来决定数据的物理位置.
create table hjin(id number,name varchar2(20),sal number(10),addr varchar2(20))
partition by hash(addr) 3
或者
create table hjin(id number,name varchar2(20),sal number(10),addr varchar2(20))
partition by hash(addr)
(
partition p1 ,
partition p2 ,
partition p3
);
*列表分区*:列表分区允许用户明确地控制行到分区的映射.列表分区允许按自然方式对无序和不相关的数据集进行分组和组织.
create table hjin(id number,name varchar2(20),sal number(10),addr varchar2(20))
partition by list(addr)
(
partition p1 values ('湖南','湖北'),
partition p1 values ('广西','广东'),
partition p1 values ('江西','云南')
);
*复合分区*:复合分区是范围分区和散列分区的结合或者是范围与列表的结合.
范围与散列的结合:
create table hjin(id number,name varchar2(20),sal number(10),addr varchar2(20))
partition by range(sal)
subpartition by hash(addr)
subpartition 3
(
partition p1 values less than (1000),
partition p2 values less than (3000),

partition p3 values less than (5000)
);
范围与列表的结合:
create table hjin(id number,name varchar2(20),sal number(10),addr varchar2(20))
partition by range(sal)
subpartition by list(addr)
subpartition template
(
partition p1 values ('湖南','湖北'),
partition p1 values ('广西','广东'),
partition p1 values ('江西','云南')
)
(
partition p1 values less than (1000),
partition p2 values less than (3000),

partition p3 values less than (5000)
);
OK,分区建立好,还可以对分区进行操作管理,如添加分区,删除分区,截断分区,合并分区,拆分分区等.
添加分区:alter table hjin add partition p4 values less than (7000)
添加分区需要注意的是,如果最后一分区值已设置为maxvalue,则不能再添加分区.
这样只能拆分分区了.
拆分分区:
alter table hjin split partition p4 at (6000)
into (partition p41,partition p42)

删除分区:
alter table hjin drop partition p41
截断分区:
alter table hjin truncate partition p42
在这里顺便讲下删除与截断的区别:
删除是把结构与数据都已删除,而截断只是把数据删除,结构还在.
合并分区,合并分区可将范围分区表或复合分区表的两个相邻分区连接起来.结果分区将继承被合并的两个分区的较高上界.如:
alter table hjin merge partitions p1,p2 into partition p2

 

原文:http://hujing1229.blog.ccidnet.com/blog-htm-do-showone-uid-60604-type-blog-itemid-183586.html


阅读(227) | 评论(0) | 转发(0) |
0

上一篇:同义词、序列

下一篇:oracle安装与卸载

给主人留下些什么吧!~~