oracle本地索引和全局索引


查询出有问题索引分区

select 'ALTER INDEX BICORE.'||INDEX_NAME ||' REBUILD SUBPARTITION '||SUBPARTITION_NAME ||';' from dba_ind_subpartitions A where INDEX_owner = 'BICORE' AND STATUS <>'USABLE'

将已有的分区表全局索引改为本地索引

由于当初建表的时候建了两张需要存储大量数据的分区表,却没有建立本地索引,而是使用建立主键的时候,Oracle自动建立的全局索引。
最近由于表空间问题drop了这两张表的部分分区,结果导致了ora-01502,索引失效了。
在网上找了很多方法,用如下方法将全局索引改为了本地索引,避免了以后再次对分区进行操作时索引失效的问题。

1. 先删除主键约束,oracle会自动删除建表时根据主键自动创建的全局索引

alter table tablename drop PRIMARY KEY;

2. 重建主键并指定索引为本地索引

alter table tablename add constraint PK_XXX PRIMARY KEY(column1,column2,....) using index local tablespace XXX;


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM