查詢出有問題索引分區
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;