oracle shrink space收缩表

segment shrink分为两个阶段:
1)、数据重组(compact):通过一系列insert、delete操作,将数据尽量排列在段的前面。在这个过程中需要在表上加RX锁,即只在需要移动的行上加锁。由于涉及到rowid的改变,需要enable row movement.同时要disable基于rowid的trigger,这一过程对业务影响比较小。
2)、HWM调整:第二阶段是调整HWM位置,释放空闲数据块。此过程需要在表上加X锁,会造成表上的所有DML语句阻塞。在业务特别繁忙的系统上可能造成比较大的影响。
shrink space 语句两个阶段都执行。
shrink space compact 只执行第一个阶段。
如果系统业务比较繁忙,可以先执行shrink space compact重组数据,然后在业务不忙的时候再执行shrink space降低HWM释放空闲数据块。
shrink必须开启行迁移功能。
alter table table_name enable row movement;
模拟收缩表:

--收集t1表统计信息,并查询t1表水位线
exec DBMS_STATS.GATHER_TABLE_STATS('APP', 'T1', method_opt => 'for all indexed columns',cascade=>TRUE);
select TABLE_NAME,TABLESPACE_NAME,NUM_ROWS,BLOCKS from dba_tables where table_name='T1';
T1CC15000247
--插入数据
insert into app.t1 (select * from EZC3_APPLY.CTV_SDZQZ);
commit;
T1CC115000688
--删除数据
select count(*) from app.t1; --15000
delete from app.t1 where ryxb='1';
select count(*) from app.t1; --6315
--再次查看水位线
exec DBMS_STATS.GATHER_TABLE_STATS('APP', 'T1', method_opt => 'for all indexed columns',cascade=>TRUE);
select TABLE_NAME,TABLESPACE_NAME,NUM_ROWS,BLOCKS from dba_tables where table_name='T1';
T1CC16315688(块没变化)
--开启t1表行移动,并且开始收缩表
alter table app.t1 enable row movement;
alter table app.t1 shrink space compact;
alter table app.t1 shrink space cascade;
--再次查看水位线
exec DBMS_STATS.GATHER_TABLE_STATS('APP', 'T1', method_opt => 'for all indexed columns',cascade=>TRUE);
select TABLE_NAME,TABLESPACE_NAME,NUM_ROWS,BLOCKS from dba_tables where table_name='T1';
T1CC16315279 (存储块减少)
模拟收缩表空间:

--插入数据增大表空间
begin
for i in 1 .. 1000
loop
insert into app.t1 (select * from EZC3_APPLY.CTV_SDZQZ);
end loop;
commit;
end; select * from dba_data_files where tablespace_name='CC1';
--现在文件大小
[oracle@deam orcl]$ du -sh cc*
613M cc1.dbf
605M cc2.dbf
--删除数据,收缩表
delete from app.t1;
alter table app.t1 enable row movement;
alter table app.t1 shrink space compact;
alter table app.t1 shrink space cascade;
--再次查看水位线
exec DBMS_STATS.GATHER_TABLE_STATS('APP', 'T1', method_opt => 'for all indexed columns',cascade=>TRUE);
select TABLE_NAME,TABLESPACE_NAME,NUM_ROWS,BLOCKS from dba_tables where table_name='T1';
--收缩表空间
ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/orcl/cc1.dbf' RESIZE 30M;
ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/orcl/cc2.dbf' RESIZE 30M;
--收缩后数据文件大小
[oracle@deam orcl]$ du -sh cc*
31M cc1.dbf
31M cc2.dbf

  

  

  

oracle收缩表和表空间的更多相关文章

  1. ORACLE 收缩表空间的数据文件

    http://blog.itpub.net/29345367/viewspace-1816427/ 方法一: 在实际的应用中经常会遇到TRUNCATE或者DELETE表中的数据后发现表空间并没有将空间 ...

  2. Oracle收缩表空间

    可以使用 alter database datafile 'file path...' resize xM 的命令来缩小数据文件. SELECT 'alter database datafile '' ...

  3. Oracle 执行报错表空间或临时表空间不足,降低水位线方法

    Oracle 执行语句插入临时表报表空间不足,在增加表空间到最大后依然报错,经分析应该为创建的临时表水位线未清除导致,查询降低水位线方法如下: 原文地址:http://blog.itpub.net/2 ...

  4. oracle之二表和表空间的关系

    表和表空间的关系 建一个使用缺省值的表空间SQL> create tablespace a datafile '/u01/data/urpdb/a01.dbf' size 10m; 利用orac ...

  5. Oracle学习笔记八 表空间

    表空间 表空间是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间 .   分区表 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下 ...

  6. Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理

    摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■  详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...

  7. ORACLE修改用户表所属表空间的步骤

    ORACLE修改用户表所属表空间的步骤 使用脚本进行修改.据目前所了解,正长情况下需要修改表的空间和表的索引的空间,如果涉及到BOLB字段的表,修改的方式又不一样了!正常情况下的修改脚本:1.修改表的 ...

  8. 实例讲解Oracle数据库设置默认表空间问题

    实例讲解Oracle数据库设置默认表空间问题   实例讲解Oracle数据库设置默认表空间问题,阅读实例讲解Oracle数据库设置默认表空间问题,DBA们经常会遇到一个这样令人头疼的问题:不知道谁在O ...

  9. (转)Linux下Oracle启动、建立表空间、用户、授权、数据库导入导出

    Linux系列 启动1.启动数据库实例,分为两步:第一步,启动监听:第二步,启动数据库实例. 1.1进入到sqlplus启动实例 [oracle@redhat ~]$ su - oracle      ...

  10. Oracle数据库之创建表空间与用户

    Oracle数据库之创建表空间与用户 一.创建表空间 基本语法表述: CREATE TABLESPACE tablespace_name [DATAFILE datafile_spec1 [,data ...

随机推荐

  1. C组合方案

    递归实现组合型枚举 从 1∼n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案. 输入格式 两个整数 n,m ,在同一行用空格隔开. 输出格式 按照从小到大的顺序输出所有方案,每行 1 个. ...

  2. [LeetCode]二进制求和

    题目 代码 class Solution { public: string addBinary(string a, string b) { int lenA = a.length(); int len ...

  3. 红客突击队&突击队分队

    红客突击队,于2019年,由队长k龙联合国内多位顶尖高校研究生牵头成立.其团队从成立至今多次参加国际网络安全竞赛并取得良好成绩,积累了丰富的竞赛经验.团队现有三十多位正式成员及若干预备人员,旨在打造国 ...

  4. OpenMP Parallel Construct 实现原理与源码分析

    OpenMP Parallel Construct 实现原理与源码分析 前言 在本篇文章当中我们将主要分析 OpenMP 当中的 parallel construct 具体时如何实现的,以及这个 co ...

  5. NG-ZORRO + angular-cli11 表格横纵向单元格合并,按需设置背景色,解决动态合并单元格动态colspan情况下,nzLeft固定列失效问题,也适用VUE,REACT

    NG-ZORRO + angular-cli11 实现表格横纵向单元格合并,按需设置背景色,并解决动态合并单元格动态colspan情况下,nzLeft固定列失效问题 HTML代码 <!-- 1. ...

  6. 如何使用MASA.Blazor

    MASA.Blazor 是什么? 基于Material Design设计和BlazorComponent的交互能力提供标准的基础组件库.提供如布局.弹框标准.Loading.全局异常处理等标准场景的预 ...

  7. Appium资源汇总

    Appium资源汇总 created: 2022-8-4 软件 网址 说明 https://github.com/appium/appium-inspector/releases 检查器的下载路径 h ...

  8. exgcd & 线性同余方程

    前置芝士 裴蜀定理 同余的性质 exgcd exgcd即扩展欧几里得定理,常用来求解\(ax + by = gcd(a,b)\)的可行解问题 推导过程: 考虑我们有: ​ \(ax + by = gc ...

  9. DNA

    思路一: 这题需要桶+哈希(简化版像A 1  B  2 ......) 具体: 先把数据输入 再枚举可能的右端点,再由右端点得到左端点(l和r相差k) 在 l到r 区间内将这一段区间哈希成一个4进制数 ...

  10. CentOS7 RPM方式安装JDK

    1.下载jdk rpm Java Downloads | Oracle 中国 https://www.oracle.com/cn/java/technologies/downloads/#jdk19- ...