Oracle 表刪除大量數據后,即使表中只有幾行記錄,但用select count(*) from table 來查詢發覺都不會馬上出來,原因是該表的空間大了,查詢起來很慢。解決的方法是把該表所占用的表空間縮小,或者說釋放表空間。
alter table XXXX move; 這樣處理后就釋放了表空間了。但是釋放表空間后,表的行號rowid會發生變化,而基於rowid的索引則會變成無效。因此該操作后必須重建索引。否則會 提示“ORA-01502: 索引'SMP.ITEMLOG_MID_IDX'或這類索引的分區處於不可用狀態” 而重建索引的方法當然可以先drop掉再create ,但是這樣太麻煩了,
用alter index XXX rebuild 這樣最快了,不會改變原來的索引結構。