日期:2014-05-17  浏览次数:20864 次

关于分区索引的问题 大家帮忙看看 感激不尽
由于数据量比较大 如果不建分区索引索引一直堆着很大 所以想建分区 索引 

但建好之后 发现trucnate掉某个分区之后 那个分区的索引还在 想问问大家怎么写语句可以让truncate掉分区的时候把分区索

引也drop掉 

我的建表 建索引的语句如下:

CREATE TABLE TB_L_BUSI_LOG

LOG_ID VARCHAR2(14),
OP_TIME DATE,
BUS_TYPE VARCHAR(2),
ACCOUNT_ID VARCHAR2(20),
USER_ID VARCHAR2(20),
MSISDN VARCHAR2(11),
CHANNEL_ID VARCHAR2(8),
CPID VARCHAR2(6),
CP_SERVICE_ID VARCHAR2(11),
CONSUME_CODE VARCHAR2(8),
MONEY NUMBER(8,2),
POINT NUMBER(8,2),
POINT_FACT NUMBER(8,2),
PREFERENTIAL_PRICE NUMBER(1),
PREFERENTIAL_RULE_ID NUMBER(6),
RESULT NUMBER(6)
)
PARALLEL
PARTITION BY RANGE(op_time) SUBPARTITION BY HASH(account_id) 

PARTITION PART_BUSI_200704 VALUES LESS THAN(TO_DATE('2007-5-01','YYYY-MM-DD')) TABLESPACE TBS_BILLING01, 
PARTITION PART_BUSI_200705 VALUES LESS THAN(TO_DATE('2007-6-01','YYYY-MM-DD')) TABLESPACE TBS_BILLING01, 
PARTITION PART_BUSI_200706 VALUES LESS THAN(TO_DATE('2007-7-01','YYYY-MM-DD')) TABLESPACE TBS_BILLING01, 
PARTITION PART_BUSI_200707 VALUES LESS THAN(TO_DATE('2007-8-01','YYYY-MM-DD')) TABLESPACE TBS_BILLING01, 
PARTITION PART_BUSI_200708 VALUES LESS THAN(TO_DATE('2007-9-01','YYYY-MM-DD')) TABLESPACE TBS_BILLING01, 
PARTITION PART_BUSI_200709 VALUES LESS THAN(TO_DATE('2007-10-01','YYYY-MM-DD')) TABLESPACE TBS_BILLING01, 
PARTITION PART_BUSI_200710 VALUES LESS THAN(TO_DATE('2007-11-01','YYYY-MM-DD')) TABLESPACE TBS_BILLING01
); 


--创建全局分区索引(op_time)
CREATE INDEX IDX_BUSI_GLOBAL_DATE ON TB_L_BUSI_LOG(op_time) 
PARALLEL
GLOBAL PARTITION BY RANGE(op_time) 

PARTITION IDX_BUSI_GLOBAL_DATE_200704 VALUES LESS THAN(TO_DATE('2007-5-01','YYYY-MM-DD')) TABLESPACE TBS_BILLING_INDX01, 
PARTITION IDX_BUSI_GLOBAL_DATE_200705 VALUES LESS THAN(TO_DATE('2007-6-01','YYYY-MM-DD')) TABLESPACE TBS_BILLING_INDX01, 
PARTITION IDX_BUSI_GLOBAL_DATE_200706 VALUES LESS THAN(TO_DATE('2007-7-01','YYYY-MM-DD')) TABLESPACE TBS_BILLING_INDX01, 
PARTITION IDX_BUSI_GLOBAL_DATE_200707 VALUES LESS THAN(TO_DATE('2007-8-01','YYYY-MM-DD')) TABLESPACE TBS_BILLING_INDX01, 
PARTITION IDX_BUSI_GLOBAL_DATE_200708 VALUES LESS THAN(TO_DATE('2007-9-01','YYYY-MM-DD')) TABLESPACE TBS_BILLING_INDX01, 
PARTITION IDX_BUSI_GLOBAL_DATE_200709 VALUES LESS THAN(TO_DATE('2007-10-01','YYYY-MM-DD')) TABLESPACE TBS_BILLING_INDX01, 
PARTITION IDX_BUSI_GLOBAL_DATE_200710 VALUES LESS THAN(MAXVALUE) TABLESPACE TBS_BILLING_INDX01
); 



感激不尽!

------解决方案--------------------
-- 当然还在啰,因为你创建的是“全局”分区索引嘛!

------解决方案--------------------
创建分区索引的时候,通常使用的关键字是LOCAL而不是GLOBAL。

一个是创建本地分区索引,一个是创建全局分区索引。

通常使用的是前者。

所以,说,你的索引创建错了。

另外,你的要求也好奇怪啊。

对分区做truncate操作的时候,凭什么要求对分区的索引做drop操作啊?

你明白truncate和drop之间的区别么?

谢谢。
------解决方案--------------------
我是来看高手的