不会更新统计信息,加上这个目的是为了使Global Index状态为VALID, 否则DDL之后,Global index的状态会变为UNUABLE.
########## Testing process #####################
kl@k02> CREATE TABLE TE_PA
2 ("A" NUMBER,
3"B" VARCHAR2(10),
4"C" VARCHAR2(5)
5 )
6PARTITION BY RANGE ("A","B")
7(PARTITION "N_1_A1"VALUES LESS THAN (10, 'AAAA1'),
8 PARTITION "N_2_A1"VALUES LESS THAN (20, 'AAAA1'),
9 PARTITION "N_MAX"VALUES LESS THAN (MAXVALUE, MAXVALUE));
Table created.
kl@k02> CREATE index te_pa_id1 on TE_pa(a);
Index created.
kl@k02> insert into te_pa select rownum a, 'AAAAAAA' b,'CCCC' c from dba_objects where rownum commit;
Commit complete.
kl@k02> select count(*) from te_pa partition (n_1_a1);
COUNT(*)
----------
9
kl@k02> select count(*) from te_pa partition (n_2_a1);
COUNT(*)
----------
10
kl@k02> exec dbms_stats.gather_table_stats(user,'te_pa',cascade=>true,granularity=>'ALL');
PL/SQL procedure successfully completed.
kl@k02> select NUM_ROWS,PARTITIONED,GLOBAL_STATS from user_indexes where index_name=upper('te_pa_id1');
NUM_ROWS PARTITION GLOBAL_ST
---------- --------- ---------
40 NOYES
kl@k02> select NUM_ROWS,PARTITIONED,GLOBAL_STATS from user_indexes where index_name=upper('te_pa_id1');
NUM_ROWS PARTITION GLOBAL_ST
---------- --------- ---------
40 NOYES
kl@k02> exec dbms_stats.gather_table_stats(user,'te_pa',cascade=>true,granularity=>'ALL');
PL/SQL procedure successfully completed.
kl@k02> alter table te_pa drop partition n_1_a1 update global indexes;
Table altered.
kl@k02> select NUM_ROWS,PARTITIONED,GLOBAL_STATS from user_indexes where index_name=upper('te_pa_id1');
NUM_ROWS PARTITION GLOBAL_ST
---------- --------- ---------
31 NOYES
kl@k02> select NUM_ROWS,PARTITIONED,GLOBAL_STATS,status from user_indexes where index_name=upper('te_pa_id1');
NUM_ROWS PARTITION GLOBAL_ST STATUS
---------- --------- --------- ------------------------
31 NOYES VALID
kl@k02> alter table te_pa drop partition n_2_a1;
Table altered.
kl@k02> select status from user_indexes where index_name=upper('te_pa_id1');
STATUS
------------------------
UNUSABLE
|