Oracle 表删除大量数据后,即使表中只有几行记录,但用select count(*) from table 来查询发觉都不会马上出来,原因是该表的空间大了,查询起来很慢。解决的方法是把该表所占用的表空间缩小,或者说释放表空间。 alter table XXXX move; 这样处理后就释放了表空间了。但是释放表空间后,表的行号rowid会发生变化,而基于rowid的索引则会变成无效。因此该操作后必须重建索引。否则会提示“ORA-01502: 索引'SMP.ITEMLOG_MID_IDX'或这类索引的分区处于不可用状态” 而重建索引的方法当然可以先drop掉再create ,但是这样太麻烦了,用alter index XXX rebuild 这样最快了,不会改变原来的索引结构。 |
Oracle 表删除大量数据后查询变慢问题
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Oracle 归档日志介绍
Has_it
2020-07-08 11:45:27
log_archive_dest_n 和log_archive_dest和 log_archive_duplex_dest
Has_it
2020-07-08 11:45:24
Oracle遇到错误
Has_it
2020-07-08 11:45:23
Oracle索引错误的解决办法
Has_it
2020-07-08 11:45:21
ORACLE两表关联更新
SAP 千里马
2020-07-08 11:10:54
更换ORACLE表对象所属用户
xuyuhai
2020-07-08 05:43:21
Oracle查找第n个最大值
xuyuhai
2020-07-08 05:05:10
Linux、Oracle、MySQL命令提示符显示时间
成屿
2020-07-08 04:42:27
如何解决表空间不足问题(数据文件达到最大值)
huangwuming002
2020-07-08 01:50:15
shutdown immediate一直停在那里
yangchen8497
2020-07-07 05:52:40
安装grid时报ins 30044错误
yangchen8497
2020-07-07 05:52:40
ORA-12560 TNS:protocol adapter error
yangchen8497
2020-07-07 05:52:40