分区表维护操作

分区维护操作:

移动分区:

通常是移动到不同的表空间。Move

Alter table sales_hash   move  partition p2 tablespace users;

(单独移动表也可以,达到整理碎片的效果Alter table tname move tablespace users;)

 

添加分区:

Alter table tname add partition p3  values less than……

只能在已经分区表的最后一个分区之后添加,并且最后一个分区使用特定健值定义,不能是maxvalue.

如果想在中间或开始部分,或者maxvalue后,添加分区,使用split 分裂已有分区。

 

拆分分区:

ALTER TABLE SALES_RANGE SPLIT PARTITION sales_2000

at (TO_DATE('01/05/2001','DD/MM/YYYY'))

INTO ( PARTITION sales_2000_1, PARTITION sales_2000_2);

 

相当于:PARTITION sales_2000_1 values less than(TO_DATE('01/05/2001','DD/MM/YYYY'))

 

删除分区:

Alter table tname drop partition p3;

Alter table tname truncate partition p3;

 

结合分区:

只是对于hash partition, 用来合并并减少一个partition

set line 150

Select  segment_name,partition_name  from dba_segments where  segment_name=upper(’sales_hash’);

 

alter table sales_hash coalesce partition;

 

合并分区:

合并相邻的分区

ALTER TABLE four_seasons  MERGE PARTITIONS quarter_one, quarter_two INTO PARTITION quarter_two;

 

交换表分区:

CREATE TABLE sales_range_temp

(salesman_id  NUMBER(5),

salesman_name VARCHAR2(30),

sales_amount  NUMBER(10),

sales_date    DATE);

 

insert into sales_range_temp values(11,11,11,sysdate);

 

select * from sales_range partition(sales_2000_2);

 

alter table sales_range exchange partition sales_2000 withtable sales_range_temp;

 

 

 

分区索引:

分为global, local index

local partitioned index:

每个local index对应一个分区。增加和删除分区自动的增加和删除了local index。

Local index可以是全表unique的,条件是partition key必须是index columns的一部分?

CREATE INDEX employees_local_idx ON employees (employee_id) LOCAL;

分区上的位图索引只能建立为local partitioned index,不能是global

 

Global partitioned index:

索引也分区,但是分几个区,按照什么样的partition key分区跟表没有关系。不能增加分区,可以使用ALTER INDEX SPLIT PARTITION删除:ALTER INDEX DROP PARTITION这些操作会使的索引失效,所以建议:

ALTER TABLE DROP PARTITION P1 UPDATE GLOBAL INDEXES

这样保证索引仍然有效,online,不需重建。


 

CREATE INDEX employees_global_part_idx ON employees(employee_id)

GLOBAL PARTITION BY RANGE(employee_id)

(PARTITION p1 VALUES LESS THAN(5000),

 PARTITION p2 VALUES LESS THAN(MAXVALUE));

 

Global Nonpartitioned Indexes:


 

 

怎样提高性能:

Partition Pruning

根据SQL自动选择应该访问哪些必要的分区,partition pruning可以跳过不必要的索引或者表分区或子分区。但是如果SQL对partition columns作了function( to_date除外),则不会删除分区。

 

 

参考: http://download.oracle.com/docs/cd/B10501_01/server.920/a96521/partiti.htm#11985

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值