暂无图片
关于oracle表空间在线碎片整理
我来答
分享
virvle
2022-08-03
关于oracle表空间在线碎片整理

关于oracle表空间在线碎片整理
使用命令:

--启用行移动功能 alter table <TABLE_NAME> enable row movement; --收缩表 alter table <TABLE_NAME> shrink space cascade ; --cascade 可以收缩与索引段相关的空间 --禁用行移动功能 alter table <TABLE_NAME> disable row movement;

表大小在60G,对表进行收缩碎片整理,是否会阻塞DML,是否会对ADG产生影响呢?

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
布衣
暂无图片

oracle10g开始提供shrink的命令,要求表空间是自动段空间管理(ASSM),降低HWM。

segment shrink 分为两个阶段:

1、数据重组(compact):通过一系列insert、delete操作,将数据尽量排在段的前面,这个过程中需要在表上加RX锁,及只需要移动的行上加锁。由于涉及到rowid的改变,需要enable row movement。同时要distable基于rowid的triggers,这个过程对业务影响比较小(–由于采用compact,只有涉及移动的行才加锁,所以不会锁定整个表,其他的DML操作有部分可以进行,进而减小系统高峰期的性能开销)

2、HWM调整:第二阶段是调整HWM位置,释放空闲数据块,此过程需要在表上加X锁(独享锁,因此这个表都被锁定,如果系统处在高峰期的时候,其他在此表的DML被挂起,会产生严重阻塞),会造成表上所有DML语句阻塞,系统忙时影响较大,

以上信息来处:
https://www.cnblogs.com/klb561/p/10995016.html

回答问题:
1、在操作shrink space 降低高水位时会有排它锁(需要谨慎操作)。
2、对ADG没有任务影响。

我在生产上整理碎片是通过在线重定义,索引的话直接用rebuild online 回收空间。

希望对你有所帮助,如果感觉答案满意的话,请点击采纳

暂无图片 评论
暂无图片 有用 0
暂无图片
布衣
答主
2022-08-03
希望对你有个参考: Oracle_索引重建—优化索引碎片 : https://www.modb.pro/db/399543 记录一起索引rebuild与收集统计信息的事故 https://www.modb.pro/db/408934
virvle
题主
2022-08-03
5千万的表,第二阶段HWM调整,有没有试过预估要多长时间
刘贵宾

shrink的一个优点是能在线进行,不影响表上的DML操作,并发的DML操作在shrink结束的时刻会出现短暂的block。

shrink的另外一个优点是在碎片整理结束后,表上相关的index仍然enable。

暂无图片 评论
暂无图片 有用 0
布衣
暂无图片

我没有单独测试过,如果有条件的话,你可以做个备份恢复到别的机器上实际操作一把。这样比较贴合生产时间。

暂无图片 评论
暂无图片 有用 0
布衣
答主
2022-08-03
因为表不同,碎片量不同,同等的数据量,操作的时间也不相同,参考价值不大。
张sir

我在生产上一般都是等有停业窗口的时候做,这种操作基本都会锁表,也可以考虑用导入导出的方式做整理碎片。

暂无图片 评论
暂无图片 有用 0
virvle
题主
2022-08-03
若已经开始,可以停止么?停止会造成啥影响不?
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏