暂无图片
关于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
打赏 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
布衣
暂无图片

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

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

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

暂无图片 评论
暂无图片 有用 0
打赏 0
virvle
题主
2022-08-03
若已经开始,可以停止么?停止会造成啥影响不?
回答交流
Markdown


请输入正文
提交
相关推荐
ORA-07445 [kslgetl] 引起的宕机
回答 7
已采纳
这是BUG导致的,注意到你的数据库版本是11.2.0.1OracleDatabase11gEnterpriseEditionRelease11.2.0.1.064bitProduction强烈建议你升
ORACLE 数据库RAC 一个节点主板故障了
回答 2
谢谢!
有没有什么语言能进sqlplus或者别的 拿到Oracle的表空间是否满等等信息?
回答 1
可以使用PL/SQL编程语言与Oracle数据库进行交互,以获取表空间信息和其他相关信息。下面是一个示例的PL/SQL代码,用于查询Oracle数据库的表空间使用情况:sqlDECLAREtotals
Oracle 已经搭建好DG的两台机 怎么可以在主库上增加数据文件 映射到另外一个路径?
回答 4
看一下standbyfilemanagement这个参数是不是设置的MANUAL备库这个参数要设置为auto
两节点rac库的CPU负载差距大
回答 4
找到原因了,负载高的CPU是32核;负载低的是40核。
oracle 数据库坏块
回答 6
已采纳
本案例是通过添加参数跳过坏块和smon回滚等操作启动数据库,即供参考;events‘10231tracenamecontextforever,level10’event‘10513tracenamec
Oracle11g如何查询单个用户的权限
回答 1
1.查询当前用户所拥有的权限&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Se
Oracle有没有发行过arm的版本?
回答 3
Oracle有arm的客户端,arm的性能堆积起来是比x86要好的,并不是arm的就差。
如何查看Oracle经常访问的数据库对象
回答 3
根据时间段,生成awr,或者全局awr,查看segmentstatistics部分,有逻辑读、物理读、全表扫、写等top,根据你的需求去查
关于oracle的触发器
回答 2
已采纳
CREATEORREPLACETRIGGERtrghrhvhisafterdeleteAFTERDELETEONHRHVHISFOREACHROWDECLAREvemidCHAR(7);vledtDA