2009-12-30 164 views
4

如果我們使用ALTER TABLE RENAME PARTITION語句重命名Oracle表中的現有分區,是否需要重新創建具有新更改的分區名稱的本地分區索引?重命名ORACLE中的分區

+0

讓我知道,如果我沒有在這個問題提供足夠的細節後。 – 2009-12-30 10:15:04

回答

7

不,重命名分區不會影響本地分區索引。您可以輕鬆地測試:

--create table 
CREATE TABLE t (
    c1 DATE, 
    c2 NUMBER(3)) 
partition by range (c1) (
    partition t_nov values less than (
    to_date('01-12-2009 00:00:00', 'DD-MM-YYYY HH24:MI:SS') 
), 
    partition t_dec values less than (
    to_date('01-01-2010 00:00:00', 'DD-MM-YYYY HH24:MI:SS') 
) 
) 
/

--create index 
create index idx_t on t (c1) local (partition t_nov, partition t_dec); 

--insert some rows 
insert into t values (sysdate, 1); 
insert into t values (sysdate, 1); 
insert into t values (sysdate, 1); 
insert into t values (sysdate, 1); 
insert into t values (sysdate, 1); 
insert into t values (sysdate, 1); 
insert into t values (sysdate, 1); 
insert into t values (sysdate, 1); 
insert into t values (sysdate, 1); 
insert into t values (sysdate, 1); 

--gather statistics 
exec dbms_stats.gather_table_stats('SYSTEM', 'T'); 

--set autotrace on, to determine that index is used 
set autotrace on 

--select indexed column 
select c1 from t where c1 < sysdate+1; 

-------------------------------------------------------------------------------------------------- 
| Id | Operation    | Name | Rows | Bytes | Cost (%CPU)| Time  | Pstart| Pstop | 
-------------------------------------------------------------------------------------------------- 
| 0 | SELECT STATEMENT   |  | 11 | 88 |  1 (0)| 00:00:01 |  |  | 
| 1 | PARTITION RANGE ITERATOR|  | 11 | 88 |  1 (0)| 00:00:01 |  1 | KEY | 
|* 2 | INDEX RANGE SCAN  | IDX_T | 11 | 88 |  1 (0)| 00:00:01 |  1 | KEY | 
-------------------------------------------------------------------------------------------------- 

--rename partition 
alter table t rename partition t_dec to t_december; 
Table altered. 


select c1 from t where c1 < sysdate+1; 

-------------------------------------------------------------------------------------------------- 
| Id | Operation    | Name | Rows | Bytes | Cost (%CPU)| Time  | Pstart| Pstop | 
-------------------------------------------------------------------------------------------------- 
| 0 | SELECT STATEMENT   |  | 11 | 88 |  1 (0)| 00:00:01 |  |  | 
| 1 | PARTITION RANGE ITERATOR|  | 11 | 88 |  1 (0)| 00:00:01 |  1 | KEY | 
|* 2 | INDEX RANGE SCAN  | IDX_T | 11 | 88 |  1 (0)| 00:00:01 |  1 | KEY | 
-------------------------------------------------------------------------------------------------- 

該指數仍在使用,重命名分區

+0

感謝您的精彩演示。欣賞你的時間。 – 2009-12-30 12:19:02

2

重命名分區不會影響本地分區索引,因此您不需要重建索引。

+0

感謝您的回答。 – 2009-12-30 12:19:44