oracle的表分区

/* 分区表 */

优点:
* 提高查询性能,执行查询时只需要访问分区
* 易于管理和维护,各个分区在进行维护时是相互独立的,可以单独对分区进行重建索引,备份和恢复等操作.

对表进行分区后,各个分区可以具有不同的存储参数,或者可以位于不同的表空间中.
一个表可以分割成任意数目的分区,但如果在表中包含有LONG或者LONG RAW类型的字段,则不能进行分区

如下情况需要对表进行分区
1.表的大小超过2G
2.需要对一个表进行并行的DML操作
3.为了平衡硬盘I/O操作,需要将一个表分散存储在不同的表空间
4.需要将表的一部分设置成只读,而另一部分为可更新的.

oracle 9i有四种类型的分区表:范围分区,列表分区,散列分区,复合分区

1.范围分区
范围分区是按照分区字段中值的范围来对表进行分区,通常用于分区字段是日期类型的表

create table sales_range
(
 salesman_id number(5),
 salesman_name varchar2(30),
 sales_amount number(10),
 sales_data date
)
partition by range(sales_date)
(
 partition pt_sales1999_q4 values less than
  (to_date('01/01/2000','DD/MM/YYY'))
  tablespace sale1999_q4,
  pctfree 0
  storage (initial 100M next 100M pctincrease 0)
 partition pt_sales2000_q1 values less than
  (to_date('01/04/2000','DD/MM/YYY'))
  tablespace sale2000_q1,
 partition pt_sales2000_q2 values less than
  (to_date('01/07/2000','DD/MM/YYY'))
  tablespace sale2000_q2,
 partition pt_sales2000_q3 values less than
  (to_date('01/10/2000','DD/MM/YYY'))
  tablespace sale2000_q3,
 partition pt_sales2000_q4 values less than
  (maxvalue)
  tablespace sale2000_q4,
)
storage (initial 50M next 50M pctincrease 0  maxentents 4096)
nologging;

oracle将认为NULL值大于一切其它非NULL值,如果字段的值可以为NULL,必须在某个分区中使用MAXVALUE关键字指定上限

添加新的范围分区
alter table sales_range 
 add partition pt_sales2000_q4 values less than
    (to_date('01/01/2001','DD/MM/YYYY'))
tablespace sales2000_q4;

2.列表分区(需要为每个分区指定一个列表取值)
如果分区字段的值并不能划分范围,同时分区字段的取值范围只是一个包含少数值的集合,可以进行列表分区

create table sales_list
(
 salesman_id number(5),
 salesman_name varchar2(30),
 sales_amount number(10),
 sales_data date
)
partition by list(sales_state)
(
 partition sales_west values in ('california','hawaii'),
 partition sales_east values in ('new york','virginia','florida'),
 partition sales_central values in ('texas','illionis'),
)
storage (initial 50M next 50M pctincrease 0  maxentents 4096)
nologging;

添加新的列表分区
alter table sales_list 
 add partition sales_north values in ('motana','minnisota');

/* 分区索引 */

oracle中,可以为分区表建立三种类型的索引
1.本地分区索引(为各个分区单独地建立索引分区,各个分区之间是相互独立的,用于DSS环境)
2.全局分区索引(对整个分区表建立索引,然后再对索引进行分区,用于OLTP环境中)
3.全局非分区索引(就是对应于一个分区表的普通的未分区的索引,作用与全局分区索引类似,用于OLTP环

posted on 2009-02-23 12:08  chuncn  阅读(538)  评论(0编辑  收藏  举报

导航