删除分区时指定的update global indexes有没有分析索引统计信息的功能?

[复制链接]
查看11 | 回复6 | 2009-11-30 15:55:11 | 显示全部楼层 |阅读模式
删除分区时指定的update global indexes有没有分析索引统计信息的功能?
[ 本帖最后由 lixunpeng 于 2009-8-14 16:21 编辑 ]
回复

使用道具 举报

千问 | 2009-11-30 15:55:11 | 显示全部楼层
分区的表要用local索引,否则索引会失效
回复

使用道具 举报

千问 | 2009-11-30 15:55:11 | 显示全部楼层
不会更新统计信息,加上这个目的是为了使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
回复

使用道具 举报

千问 | 2009-11-30 15:55:11 | 显示全部楼层
我没有
回复

使用道具 举报

千问 | 2009-11-30 15:55:11 | 显示全部楼层
楼主为什么自己不做个实验测试下 ???
回复

使用道具 举报

千问 | 2009-11-30 15:55:11 | 显示全部楼层
原帖由 棉花糖ONE 于 2009-8-14 16:01 发表
楼主为什么自己不做个实验测试下 ???

您怎么老是这么多技术之外的问题呢?
各人和各人的情况一样吗?
要是公司就你一个IT,什么都找你,忙的你不可开交,你有时间做实验吗?
你要是上下班路上将近4个小时,地铁上还抱着书看Oracle,你能在地铁里做实验吗?
你要是有紧要的Oracle任务需要研究测试,你还能对暂时不紧迫的问题都做实验吗?
你要是Oracle初学者,对很多基本的理论还不了解,你能对什么问题都先去详细的做实验吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行