当前位置: 首页 > news >正文

Oracle 中 SHRINK 与 MOVE 操作的比较

Oracle 中 SHRINK 与 MOVE 操作的比较

在 Oracle 数据库中,SHRINKMOVE 都是用于重组表和索引以减少空间碎片的重要操作,但它们在实现方式和适用场景上有显著区别。

SHRINK 操作

基本语法

ALTER TABLE table_name SHRINK SPACE [COMPACT] [CASCADE];

特点

  1. 在线操作:可以在表被使用时执行(DML操作仍可进行)
  2. 渐进式:可以分阶段执行(先COMPACT再最终收缩)
  3. 仅适用于ASSM表空间:自动段空间管理(ASSM)的表空间才支持
  4. 不改变存储参数:不会改变表的INITIAL或NEXT存储参数
  5. 需要行移动:需要启用行移动 ALTER TABLE table_name ENABLE ROW MOVEMENT;

优点

  • 对业务影响小
  • 可以回收高水位线(HWM)以上的空间
  • 操作可中断,不会回滚已完成的压缩

缺点

  • 不能改变表的物理存储属性
  • 不能将表移动到其他表空间

MOVE 操作

基本语法

MOVE[ filter_condition ][ ONLINE ][ segment_attributes_clause ][ table_compression ][ index_org_table_clause ][ { LOB_storage_clause | varray_col_properties }... ][ parallel_clause ][ allow_disallow_clustering ][ UPDATE INDEXES[ ( index { segment_attributes_clause| update_index_partition }[, index { segment_attributes_clause| update_index_partition } ]...)]]
ALTER TABLE table_name MOVE [TABLESPACE tablespace_name] [ONLINE];

特点

  1. 离线操作:默认会锁定表(除非使用ONLINE选项,12C+)
  2. 完全重组:重建表结构,重置高水位线
  3. 可跨表空间:可以移动到不同的表空间
  4. 改变物理存储:可以改变存储参数
  5. 需要重建索引:移动后相关索引会失效,需要重建

优点

  • 能彻底重组表,性能提升明显
  • 可以改变表的物理存储位置和参数
  • 适用于所有表空间类型

缺点

  • 对业务影响较大(除非使用ONLINE选项)
  • 需要额外处理索引重建
  • 不能分阶段执行

关键区别对比

特性SHRINKMOVE
操作类型在线默认离线(可在线)
空间回收回收HWM以上空间完全重置HWM
表空间限制仅ASSM表空间所有表空间
表空间移动不支持支持
存储参数不改变可改变
索引处理自动维护需要重建
适用场景日常维护大规模重组/迁移

使用建议

  1. 日常空间维护:使用SHRINK进行定期空间回收
  2. 性能优化:当表严重碎片化时使用MOVE彻底重组
  3. 表空间迁移:必须使用MOVE操作
  4. 关键业务表:考虑使用MOVE ONLINE减少影响

注意事项

  • 两种操作都会产生大量重做日志(redo),应在低峰期执行
  • 操作前建议备份重要数据
  • 大表操作可能需要考虑分批进行
  • 监控UNDO表空间使用情况,避免操作失败
http://www.xdnf.cn/news/590023.html

相关文章:

  • NR 通讯的整体架构
  • PyTorch可视化工具——使用Visdom进行深度学习可视化
  • Jetson:aarch64平台编译onnxruntime使用GPU
  • 【GESP】C++三级真题 luogu-B4038 [GESP202409 三级] 平衡序列
  • Flask 路由跳转机制:url_for生成动态URL、redirect页面重定向
  • 基于 ZU49DR FPGA 的无线电射频数据采样转换开发平台核心板
  • Docker-Mysql
  • LLaMA-Factory微调LLM-Research/Llama-3.2-3B-Instruct模型
  • 基于多目标优化的样本调度适应度函数设计
  • 7.1.查找的基本概念
  • 高等数学-无穷级数
  • Unity飞机大战-射击类游戏3D虚拟
  • Athena 执行引擎:在线服务计算的效率王者
  • pandas :从入门到进阶的系统实践笔记
  • 错误: gdalbuildvrt 命令未找到————的问题
  • 数字孪生驱动的离散制造智能升级:架构设计与工程实践
  • C++:关联式容器map容器,multimap容器
  • ssrf漏洞学习
  • 并发编程:各种锁机制、锁区别、并发工具类深刻总结
  • 关于标准盒模型和怪异盒模型
  • python正方形面积 2024年信息素养大赛复赛/决赛真题 小学组/初中组 python编程挑战赛 真题详细解析
  • 数据分析师如何用OKR驱动业务增长
  • 钉钉通讯录与金蝶云星空无缝集成的技术实现方法
  • AI时代的操作系统:VAST如何重塑基础设施新标准?
  • SenseGlove Nova2 力反馈数据手套:助力外科手术训练的精准触觉模拟
  • 海外 APP 开发的全方位指南:从技术架构到市场进入的综合策略
  • 2023CCPC东北四省赛题解
  • 关于 Burp Suite 详解
  • 一键安装docker
  • Java 内存模型中的读、写屏障