暂无图片
oracle分区表truncate分区,索引空间不释放!
我来答
分享
暂无图片 匿名用户
oracle分区表truncate分区,索引空间不释放!

有一张130G左右,1.2亿左右的分区表,按parttion_flag字段分区,该表上有两个全局索引所占了空间差不多1T,该表每天会有大量inster,然后会做alter table xxx trauncate parttion xxx update global indexes;  索引所占空间为什么不释放啊,求解




我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
吾喾

需要手动rebuild online;

UPDATE GLOBAL INDEXES只维护全局索引。因为该操作不等于REBUILD,只是在进行DDL的时候,同步维护索引信息而已。

暂无图片 评论
暂无图片 有用 0
TAO
2022-03-07
也就是说truncate分区是不会清理全局索引的是嘛?
吾喾
答主
2022-03-07
12C以上会自动维护全局索引,11G的话truncate分区时需要加上UPDATE GLOBAL INDEXES
TAO
2022-03-08
十分感谢
你好我是李白

当你使用12.1引入的update global indexes方式处理分区数据时自动维护全局索引特性,其实并不是立即对全局索引进行维护,而是生成了延迟维护的scheduler job,会在oracle评估的指定执行,可以从下面视图查看
select JOB_NAME,LAST_START_DATE,NEXT_RUN_DATE from DBA_SCHEDULER_JOBS

如果需要立即维护,可以采用下面几种办法:

  1. dbms_part包
exec DBMS_PART.CLEANUP_GIDX('owner','part_name');

2.dbms_scheduler.run_job

  1. 重建索引
alter index <index_name> rebuild online;
-- 并行度根据情况指定即可

  1. coalesce cleanup
alter index <index_name> coalesce cleanup;

暂无图片 评论
暂无图片 有用 1
TAO
2022-03-08
十分感谢
不太冷

看看索引是否还是有效的

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏