oracle收缩表和表空间
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收缩表和表空间的更多相关文章
- ORACLE 收缩表空间的数据文件
http://blog.itpub.net/29345367/viewspace-1816427/ 方法一: 在实际的应用中经常会遇到TRUNCATE或者DELETE表中的数据后发现表空间并没有将空间 ...
- Oracle收缩表空间
可以使用 alter database datafile 'file path...' resize xM 的命令来缩小数据文件. SELECT 'alter database datafile '' ...
- Oracle 执行报错表空间或临时表空间不足,降低水位线方法
Oracle 执行语句插入临时表报表空间不足,在增加表空间到最大后依然报错,经分析应该为创建的临时表水位线未清除导致,查询降低水位线方法如下: 原文地址:http://blog.itpub.net/2 ...
- oracle之二表和表空间的关系
表和表空间的关系 建一个使用缺省值的表空间SQL> create tablespace a datafile '/u01/data/urpdb/a01.dbf' size 10m; 利用orac ...
- Oracle学习笔记八 表空间
表空间 表空间是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间 . 分区表 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下 ...
- Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理
摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■ 详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...
- ORACLE修改用户表所属表空间的步骤
ORACLE修改用户表所属表空间的步骤 使用脚本进行修改.据目前所了解,正长情况下需要修改表的空间和表的索引的空间,如果涉及到BOLB字段的表,修改的方式又不一样了!正常情况下的修改脚本:1.修改表的 ...
- 实例讲解Oracle数据库设置默认表空间问题
实例讲解Oracle数据库设置默认表空间问题 实例讲解Oracle数据库设置默认表空间问题,阅读实例讲解Oracle数据库设置默认表空间问题,DBA们经常会遇到一个这样令人头疼的问题:不知道谁在O ...
- (转)Linux下Oracle启动、建立表空间、用户、授权、数据库导入导出
Linux系列 启动1.启动数据库实例,分为两步:第一步,启动监听:第二步,启动数据库实例. 1.1进入到sqlplus启动实例 [oracle@redhat ~]$ su - oracle ...
- Oracle数据库之创建表空间与用户
Oracle数据库之创建表空间与用户 一.创建表空间 基本语法表述: CREATE TABLESPACE tablespace_name [DATAFILE datafile_spec1 [,data ...
随机推荐
- eclipse打不开maven项目中的pom.xml
1.问题描述 在eclipse中我双击打开maven项目中的pom.xml报错. 2.产生原因 正如报错中描述的那样"Failed to create the part's controls ...
- 2022弱口令实验室招新赛CTF赛道WriteUp
Misc 签到 下载附件,得到一张二维码. 扫码,然后根据提示"linux"操作系统,直接cat /flag,得到flag. EasyMisc 下载得到EasyMisc附件,压缩包 ...
- xpath解析数据的方法
1 功能描述 2 1.实例化一个etree对象,且需要将被解析的页面源码数据加载到该对象中 3 2.调用etree对象中的XPath表达式实现标签的定位和内容捕获 4 3.环境安装 pip insta ...
- 线性构造treap
数据结构 线性构造treap treap的线性构造可以使复杂度锐减到\(O(n)\),很优秀 treap的本质就是小根堆+二叉搜索树,即保证val满足搜索树的同时,维护rad的小根堆. 现在我们先把数 ...
- 【AI编译器原理】系列来啦!我们要从入门到放弃!
随着深度学习的应用场景的不断泛化,深度学习计算任务也需要部署在不同的计算设备和硬件架构上:同时,实际部署或训练场景对性能往往也有着更为激进的要求,例如针对硬件特点定制计算代码. 这些需求在通用的AI框 ...
- ArcGIS工具 - 计算折点数量
在GIS中,点构成线,线构成面,面构成体,维度增加,模型也加复杂.有时,我们需要统计线面等要素到底由多少个点构成,系统工具没有此功能,为源地理提供了三种解决方案. 方法一 折点转点 使用要素折点转点工 ...
- 【学习笔记】Tarjan 图论算法
- 前言 本文主要介绍 Tarjan 算法的「强连通分量」「割点」「桥」等算法. 争取写的好懂一些. - 「强连通分量」 - 何为「强连通分量」 在有向图中,如果任意两个点都能通过直接或间接的路径相互 ...
- 模拟BS服务器分析-模拟BS服务器代码实现
模拟BS服务器分析 模拟网站服务器,使用浏览器访问自己编写的服务端程序,查看网页效果. 服务器要给客户端回写一个信息,回写一个html页面(文件)我们需要读取index.html文件,就必须的知道这个 ...
- 使用ProPerties集合存储数据-Properties集合中的方法store
使用ProPerties集合存储数据 java.util.Properties`继承于Hashtable,来表示一个持久的属性集.它使用键值结构存储数据每个键及其对应值都是一个字符串.该类也被许多Ja ...
- 读Java8函数式编程笔记03_高级集合类和收集器
1. 方法引用 1.1. 一种引用方法的轻量级语法 1.1.1. 提供了一种简短的语法 1.1.2. 标准语法为Classname::methodName 1.2. 凡是使用Lambda表达式的地方, ...