数据清理的遗留问题处理(二)(r6笔记第91天)
之前尝试了历史数据的清理,在逻辑层面清除了数据,可以参见 http://blog.itpub.net/23718752/viewspace-1814000/
但是从物理层面来看,数据文件还是那么大,空间还是没有释放掉。
从计划的500多G数据空间清理到了90G
SEGMENT_TYPE SIZE_MB
------------------ ----------
INDEX PARTITION 260279
TABLE PARTITION 294120
然后在经过一番清理之后,对应的段空间一下子就将下来了。
EGMENT_TYPE SIZE_MB
------------------ ----------
INDEX PARTITION 31823
TABLE PARTITION 47218
最后全部清理完
check segement size summary from year xxx
no rows selected
现在问题来了。清理数据文件该怎么做。思路应该是在dba_segments里面去找是否存在相应的段。如果没有即代表着可以删除这些数据文件。
有的朋友可能会说为什么一定要清掉这些数据文件,这个也有历史原因,就是表空间和时间也有关系,比如某年的某月可能就会根据逻辑生成一个表空间,按照这种 思路,尽管我清除了端数据,但是放着那些数据文件,它们是不会被使用到的,还是占着地方,所以需要直接清掉,给后续的数据留空间。
目前想达到的效果就是,根据表空间能够查出来,如果某个表空间没有对应的段对象,显示为0,标志着可以清理。
select tablespace_name,count(*) from dba_segments where tablespace_name in ('xxxxx','xxx') group by tablespace_name;
xxxxx 0
xxx 0
但是实际上去写的时候发现还是没那么好弄,经过一番折腾写出了一个基本实现要求的语句,但是算是一个初始版本,因为结果显示还是有些牵强。
select tablespace_name,count(*)cnt from dba_segments where tablespace_name like '%DATA%2012%' group by tablespace_name
union
select tablespace_name,null cnt from dba_segments where tablespace_name like '%DATA%2012%' group by tablespace_name
TABLESPACE_NAME CNT
------------------------------ ----------
SERLOG_DATA_20120705 0
SERLOG_DATA_20120705 11
SERLOG_DATA_20120706 0
SERLOG_DATA_20120706 19
SERLOG_DATA_20121007 0
SERLOG_DATA_20121007 31
SERLOG_DATA_20121008 0
SERLOG_DATA_20121010 0
按照这个情况,只有表空间SERLOG_DATA_20121010是可以删除的。其他的都会和一个dummy列并存。
当然sql写成这样也是醉了,能实现基本需求也行,但是成百上千的表空间,我觉得还是不好。继续改进。使用了minus的方式。
select tablespace_name from dba_tablespaces s1 where tablespace_name like '%DATA%2012%'
minus
select tablespace_name from dba_segments s1 where tablespace_name like '%DATA%2012%' group by s1.tablespace_name
这种方式就会做一个减法,先把相关的表空间罗列出来,然后在dba_segements里面过滤组合只会显示有段对象的表空间。
这样那些隐藏着的表空间都会一一罗列出来。
直接使用drop tablespace来清理。
查看asm磁盘空间,清理前剩余80多G
GROUP_NUMBER NAME FREE_MB TOTAL_MB
------------ ------------------------------ ---------- ----------
1 ARCH 204740 204800
2 DATA 84336 6383104
清除多余的数据文件,可以看到立马剩出了快400G.
GROUP_NUMBER NAME FREE_MB TOTAL_MB
------------ -------------------- ---------- ----------
1 ARCH 204740 204800
2 DATA 390360 6383104
这个时候别被这些成绩所迷惑,删除分区的同时会清楚分区索引,这些分区索引的空间又是不少。至于有多少呢,我们还是使用minus的方式来清理。
清除多余的索引数据文件,清理之后剩余了近1T的空间。
GROUP_NUMBER NAME FREE_MB TOTAL_MB
------------ -------------------- ---------- ----------
1 ARCH 203906 204800
2 DATA 981640 6383104
这个例子不是说明minus清理有多好,是想说清理的时候,逻辑清理100%完成,物理清理很可能会漏掉,清理了不到50%,这样我们的工作就不彻底,半途而废。
- 探秘Tomcat——从一个简陋的Web服务器开始
- EnterLib PIAB又一个BUG?[续]——这是一个致命的BUG
- Google工程师:谷歌翻译在几个月内效果明显提升的秘诀
- 回调与并发: 通过实例剖析WCF基于ConcurrencyMode.Reentrant模式下的并发控制机制
- EnterLib PIAB又一个BUG?[续]——这是一个致命的BUG
- 年终盘点2017年发生在上海的科技大新闻
- 数字供应链第六章-网络风险、知识产权盗窃、合规和数据挖掘业务合同
- 使命必达: 深入剖析WCF的可靠会话[实例篇](内含美女图片,定力差者慎入)
- 快速全面构建大数据认知体系
- 谈谈分布式事务之二:基于DTC的分布式事务管理模型[上篇]
- ConcurrencyMode.Multiple 模式下的WCF服务就一定是并发执行的吗:探讨同步上下文对并发的影响[下篇]
- 谈谈分布式事务之二:基于DTC的分布式事务管理模型[上篇]
- 学习SpringMVC——拦截器
- 学习SpringMVC——国际化+上传+下载
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 波士顿房价预测 - 最简单入门机器学习 - Jupyter
- 机器学习竞赛分享:NFL大数据碗(上篇)
- 大文件分割、命名脚本 - Python
- adb常用命令总结
- Cypress执行测试并邮寄发送测试报告
- 重拾前端技能为你的职业前程保驾护航
- 检查图片是否损坏、图片后缀是否与实际图片类型对应 - Python
- 规则引擎 - drools 使用讲解(简单版) - Java
- Python奇技淫巧 - 持续更新中....
- 150+行Python代码实现带界面的数独游戏
- Python实现十大经典排序算法
- 140行Python代码实现Flippy Bird
- 200行Python代码实现贪吃蛇
- 简单说维特比算法 - python实现
- Android绘图及Bitmap几个知识点整理