转自:https://blog.51cto.com/fengfeng688/1955137

move和shrink的共同点:

收缩段,消除部分行迁移,消除空间碎片,使数据更紧密

shrink用法:

语法:

alter table TABLE_NAME shrink space [compact|cascades]

shrink分为以下两个阶段:

1.数据重组(compact)

通过一系列的insert,delete操作,将数据尽量排列在段的前面。在这个过程中,需要在表上面加RX锁,即只在需要移动的行上加锁。由于涉及到ROWID的改变,因此需要启动行迁移,同时disable基于rowid的trigger,这一过程对表的影响比较小。

2.高水位(HWM)的调整

此过程需要在表上加X锁,会造成表上的所有DML语句阻塞,在业务比较繁忙的系统上可能会产生较大的影响

因此如果系统比较繁忙,可以先重组数据,再调整水位线

/*打开行迁移*/
alter table TABLE_NAME enable row movement;
/*只整理碎片 不回收空间*/
alter table TABLE_NAME shrink space compact;
/* 整理碎片并回收空间*/
alter table TABLE_NAME shrink space;
/*整理碎片回收空间 并连同表的级联对象一起整理(比如索引)*/
alter table TABLE_NAME shrink space cascade;
/*分区表的整理*/
alter table pt_table modify PARTITION P1 shrink space cascade;

shrink的优点:

可以在线执行

可以使用参数cascade同步收缩索引等

执行后不会导致索引失效

可以避免alter table move过程中对表空间的占用

move:

语法:

alter table table_name move tablespace new_tablespace;
alter index index_name rebuild tablespace new_tablespace

move的优点:

可以修改表的初始storage参数,例如initial

使用move的注意事项:

表上面的索引需要重建,因为move后,rowid会发生变化,因此索引会失效

move表是会对表锁定,而且是exclusive lock

move时要保证新的表空间剩余量

move和shrink的区别

move后,表在表空间中的位置肯定会变,可能前移也可能后移,一般来说如果该表前面的表空间中有足够空间容纳该表,则前移,否则后移

hrink后,表在表空间中的位置肯定不变,也就是表的段头位置不会发生变化

Move会移动高水位,但不会释放申请的空间,是在高水位以下(below HWM)的操作

shrink space 同样会移动高水位,但也会释放申请的空间,是在高水位上下(below and above HWM)都有的操作

使用move时,会改变一些记录的ROWID,所以MOVE之后索引会变为无效,需要REBUILD

使用shrink space时,索引会自动维护。如果在业务繁忙时做压缩,可以先shrink space compact,来压缩数据而不移动HWM,等到不繁忙的时候再shrink space来移动HWM

shrink可以单独压缩索引,alter index xxx shrink space来压缩索引。另外、压缩表时指定Shrink space cascade会同时压缩索引

oralce move和shrink释放高水位的更多相关文章

  1. Oracle降低高水位先(转载)

    Oracle  降低高水位线的方法 高水位(HIGH WARTER MARK,HWM)好比水库中储水的水位,用于描述数据库中段的扩展方式.高水位对全表扫描方式有着至关重要的影响.当使用DELETE删除 ...

  2. Oracle段高水位(HWM, high water mark)问题

    Oracle对表做全表扫描的时候 ,会扫描完HWM以下的数据块.如果某个表delete(delete操作不会降低高水位)了大量数据,那么这时对表做全表扫描就会做很多无用功,扫描了一大堆数据块,最后发现 ...

  3. Oracle 高水位说明和释放表空间,加快表的查询速度

    高水位的介绍 数据库运行了一段时间,经过一些列的删除.插入.更改操作有些表的高水位线就有可能和实际的表存储数据的情况相差特别多,为了提高检索该表的效率,建议对这些表进行收缩: 查找高水位线的表 查找表 ...

  4. MOVE降低高水位 HWM

    MOVE降低高水位 HWM --创建实验表空间SQL> create tablespace andy03 datafile '/home/oracle/app/oradata/orcl/andy ...

  5. oracle高水位问题

    转自:https://blog.csdn.net/cnham/article/details/5987999 说到HWM,我们首先要简要的谈谈ORACLE的逻辑存储管理.我们知道,ORACLE在逻辑存 ...

  6. [Oracle]高水位标记(HWM)

    (一)高水位标记(High Water Mark,HWM)的概念 所谓高水位标记,是指一个已经分配的段中,已经使用的空间与未使用的空间的分界线.在表的使用过程中,随着数据的不断增多(insert),H ...

  7. Oracle高水位2

    --Oracle高水位2---------------------2013/11/24 一.什么是水线(High Water Mark)? 所有的oracle段(segments,在此,为了理解方便, ...

  8. 探究 Oracle 高水位对数据库性能影响

    在开始深入分析之前,让我们先来了解一下高水位线 HWM. 一. HWM 的基本原理 (概念) 在 Oracle 中,高水位线(High-warter mark, HWM)被用来形容数据块的使用位置,即 ...

  9. oracle高水位降低法

    1.什么是高水位?(high water mark 简称:HWM)     所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词)都有一个在段内存放数据的 ...

随机推荐

  1. spring boot 项目使用idea正常打包后执行总是出现异常,解决办法

    众所周知,spring boot 在构建项目时,确实为Java程序员们省了不少力气,打包项目非常容易. 上周在项目中遇到打包后的项目总是无法运行,困扰了我们团队将近两天才找到原因. 图和真相在这里.

  2. Spring Cloud正式移除Hystrix、Zuul等Netflix OSS组件

    1. 前言 2020-12-22日Spring官方博客宣布,Spring Cloud 2020.0.0正式发布.2020.0.0是第一个使用新的版本号命名方案的Spring Cloud发行版本.在此之 ...

  3. webform中Repeater中调用后台方法

    前台 <%#RoleNameSpan(Eval("RoleName").ToString())%> 后台 /// <summary> /// 角色名称过长处 ...

  4. MVC中使用AutoMapper

    参考博文 https://www.cnblogs.com/fred-bao/p/5700776.html 前言 通常在一个应用程序中,我们开发人员会在两个不同的类型对象之间传输数据, 通常我们会用DT ...

  5. NuGet 学习笔记(1)--Nuget安装使用

    安装NuGet扩展 要使用NuGet首先需要安装它(vs2013NuGet) 1. 点击 工具(Tools)-->扩展管理器(Extensions and Updates)...-->右上 ...

  6. 第一个开源控件:Google 官方下拉刷新控件 SwipeRefreshLayout 强化版,支持上拉刷新

    最近比较闲,所以趁着这时间撸了个SwipeRefreshLayout的加强版,Github地址. 原版只支持下拉刷新,强化之后支持上拉刷新和一进入页面就加载刷新,整个控件的加载动画是一致的,毫无违和感 ...

  7. 查看权限详情 将部门大类单据整合,将子类单据id去重合并

    /** * 查看权限详情 * @param id 部门id * @return */ @GetMapping("getListInfo") public R getDetail(S ...

  8. spring mvc与mybatis与maven+mysql框架整合

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  9. Android猜数字大小游戏

    功能介绍:该程序能够提示猜大了猜小了,并且对空白输入处理,还对猜测次数限制,提供重置功能. 1.先看界面,一个输入框EditText,两个Button 2.界面设计  activity_main2.x ...

  10. Linux目录的慨念

    1.路径 对文件进行访问时,要用到"路径"(Path)的慨念. 顾名思义,路径是指从树型目录中的某个目录层次到某个文件的一条道路. 此路径的主要构成是目录名称,中间用"/ ...