Oracle 收缩表空间一例
备注:
Oracle 11.2.0.4
文章目录
- 一. 需求
- 二. 解决方案
- 2.1 清理过期数据
- 2.2 收缩表空间
- 2.3 清理表碎片
- 2.4 直接把相关的表drop掉
- 2.5 把该表空间下其它的表移出此表空间
- 2.6 查看压缩的空间
一. 需求
近期有一个日志库,占用了比较多的空间,需要将历史的清理,然后收缩空间。
如下图所示,4T的空间已经差不多用完。
二. 解决方案
首先想到的是清理掉超过半年的数据,然后resize 表空间。
2.1 清理过期数据
因为业务的表是 tablename_yearmonth格式,例如 log_202204,每个月一个表,所以直接进行truncate即可。
找到大表:
select t.segment_name,t.BYTES/1024/1024/1024 GB,t.segment_type
from user_segments t
where t.segment_type in ('TABLE','TABLE PARTITION')
order by nvl(t.BYTES/1024/1024/1024,0) desc;
truncate 大表:
select 'truncate table '|| t.TABLE_NAME ||';'from user_tables twhere t.TABLE_NAME like 'LOG%';
2.2 收缩表空间
select a.tablespace_name,
a.file_name,
a.totalsize as totalsize_MB,
b.freesize as freesize_MB,
'ALTER DATABASE DATAFILE ''' || a.file_name || ''' RESIZE ' ||
round((a.totalsize - b.freesize) + 200) || 'M;' as "alter datafile"
from (select a.file_name,
a.file_id,
a.tablespace_name,
a.bytes / 1024 / 1024 as totalsize
from dba_data_files a) a,
(select b.tablespace_name,
b.file_id,
sum(b.bytes / 1024 / 1024) as freesize
from dba_free_space b
group by b.tablespace_name, b.file_id) b
where a.file_id = b.file_id
and b.freesize > 100
and a.tablespace_name in ('TBS_LOG_DATA')
order by a.tablespace_name
将上一步的 alter datafile语句拷贝出来执行:
有部分报错:
ORA-03297: file contains used data beyond requested RESIZE value
2.3 清理表碎片
因为我使用的是truncate,理论上不会受高水位的影响,在网上找了几个博客,也是说要降低表的高水位,清理表碎片。
select 'alter table '||t.TABLE_NAME||' enable row movement;','alter table '||t.TABLE_NAME||' shrink space cascade;'from user_tables twhere t.TABLE_NAME like 'LOG%';
清理完碎片之后,重新执行,依旧报错。
2.4 直接把相关的表drop掉
select 'drop table '|| t.TABLE_NAME ||'purge;'from user_tables twhere t.TABLE_NAME like 'LOG%';
drop掉表之后,重新执行,依旧报错。
2.5 把该表空间下其它的表移出此表空间
万能的itpub上有个博客:
http://blog.itpub.net/15747463/viewspace-767555/
如果空闲的extent如果在文件的中间,此时无法进行resize ,必须把尾部的object drop 然后重建 再resize datafile。
也就是说同时期该用户下其它表的写入,也在这个数据文件下,那么就不能进行resize。
把其它表移动到users表空间:
select 'alter index '||index_NAME||' rebuild tablespace users;' from user_indexes where TABLE_NAME not like 'LOG_%';
select 'alter table '||TABLE_NAME||' move tablespace users;' from user_tables where TABLE_NAME not like 'LOG_%';
再次运行压缩空间,成功
2.6 查看压缩的空间
可以看到一下子多出了2.1T 的空间
收缩空间运行速度还不错,50多个数据文件,几分钟就压缩完成。
Oracle 收缩表空间一例相关推荐
- oracle如何收缩表空间,ORACLE收缩表空间
最近导一个空库到数据库后,发现占用的表空间非常大,执行表收缩(SHRINK SPACE CASCADE)后,发现实际占用的空间不到1%. 但是收缩表空间大小提示错误 ALTER DATABAS ...
- oracle如何收缩表空间文件,ORACLE 收缩表空间的数据文件
方法一: 在实际的应用中经常会遇到TRUNCATE或者DELETE表中的数据后发现表空间并没有将空间进行释放,磁盘空间被告占用感觉空间白白被浪费掉了. 通过下面的SQL语句查看表空间总大小及实用大小, ...
- oracle 默认表空间 10g,oracle 10G 收缩表空间
如果经常在表上执行DML操作,会造成数据库块中数据分布稀疏,浪费大量空间.同时也会影响全表扫描的性能,因为全表扫描需要访问更多的数据块.从oracle10g开始,表可以通过shrink来重组数据使数据 ...
- oracle表空间默认增长大小,Oracle 用户表空间查看、修改大小、设置自增长等
分类: Oracle 首先登入某个用户,查看某个用户在哪个表空间下: select username,default_tablespace from user_users; 查看该用户下所有的表: s ...
- ORACLE数据库表空间文件在哪6,Oracle表空间数据文件移动
Oracle表空间数据文件移动 系统:windows oracle:10g 实现把用户表空间中的数据文件从某一个路径移动到里一个路径 一.针对可offline的非系统表空间 本例移动oracle的案例 ...
- oracle 查看表空间总量,oracle 查看表空间以及剩余量
--1.查看表空间的名称及大小 SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tabl ...
- ORA-01658:oracle创建表空间时指定的UNLIMITED真的是UNLIMITED吗?
背景介绍 最近,同事说在执行ETL的过程中oracle报错 ORA-01658: unable to create INITIAL extent for segment in tablespace X ...
- oracle减小表空间打下,缩小oracle表空间(二)
通过delete数据,是不能降低hwm.不能释放表空间(一般情况下都是,极端情况下除外),但可以通过drop table tbname.truncate table tbname来释放表空间,而且执行 ...
- 更改oracle 表空间大小,更改oracle数据库表空间大小
Oracle表空间扩展 使用oracle时可能遇到无法通过8192在表空间中扩展错误,原因是数据库的表空间不足. oracle表空间数据文件容量与db_block_size有关,在初始建库时指定DB_ ...
最新文章
- java args例子_Spring AOP中使用args表达式的方法示例
- Java学习之生成随机数
- mysql第四章表单查询样题_查询mysql表单中前10条,然后在li中循环输出。
- ASP.NET的五大数据控件分析
- 方立勋_30天掌握JavaWeb_自己编写jdbc框架、dbutils框架(未完)
- asp.net listview 单元格文字颜色_Excel – 如何批量修改单元格中部分关键字的字体颜色?...
- 欧拉线性筛 与 欧拉函数 + 几道例题
- java获取网卡正真的mac_java获取网卡的mac地址
- 【C++实现python字符串函数库】strip、lstrip、rstrip方法
- (附源码)APP+springboot订餐APP 毕业设计 190711
- C语言面试题---结构体
- JavaScript自动切换并播放视频 | Tampermonkey
- [信息论与编码理论专题-6]:物理层信道编码
- 计算机桌面没有cdef,如何解决电脑CDEF盘都打不开出现“该文件没有程序与之关联来执行该操作”的问题...
- 李喆:程序员到底怎么了
- 浅谈Inventor2023-实用功能大揭秘~
- (Ynoi2015) 纵使日薄西山 题解
- 2018Java校招面试题目合集
- jasig cas java示例_单点登录cas jasig学习笔记
- Ant自动构建JavaWeb