数据清理的遗留问题处理(二)

之前尝试了历史数据的清理,在逻辑层面清除了数据,可以参见 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%,这样我们的工作就不彻底,半途而废。

时间: 2024-09-24 06:36:44

数据清理的遗留问题处理(二)的相关文章

数据清理的遗留问题处理

最近处理一个遗留问题,感觉手动修复真是让人抓狂,所以花了点力气写了一个半自动的脚本,总算从这个繁琐的工作中解放出来了. 问题的背景如下图所示. 存在一个很大的统计库(有容灾备库),还有一个历史统计库,历史统计库中都是相对较老的数据. 统计库中的数据相对要新一些,但是数据持续增长,空间使用太多,业务中使用历史数据的频率不高,把历史数据清理了又怕影响业务,就需要把数据暂时挪到历史库中,所以历史库中的数据都是几年前的老数据,而统计库中的都是近几年相对较新的数据. 比如一个分区表test,有2011年的

介绍一款数据清理,数据重构软件--TIBCO CLARITY

问题描述 TibcoClarity是tibco公司一款数据清理,重构,整合的工具.它基于Google的OpenRefine开发,加入了多种商业软件(如Salesforce,Maketo)和数据库的整合,添加了地址校验,数据类型校验等功能TIBCOClarity–CloudEditionenablesbusinessuserstodiscover,profile,cleanse,andstandardizerawdatacollatedfromdisparatesourcesandprovideg

java实现数据备份和数据清理

问题描述 求用java实现的数据备份和数据清理完整代码? 解决方案 解决方案二:可以通过调用(远程)数据库的命令执行,处理数据命令执行的结果,比如数据库备份产生的文件期待更好的思路...解决方案三:劝你不要用Java来做这种系统管理方面的工作.解决方案四:该回复于2011-03-10 09:24:08被版主删除解决方案五:你这个问题没有说清楚啊?数据备份的数据源是什么?数据库?xml文件?excel文件?是否需要远程操作?解决方案六:谢谢各位啦!我是个大菜鸟,不懂!备份的数据库是sqlserve

CYQ.Data 轻量数据层之路 使用篇二曲 MAction 数据查询(十三)

上一篇:CYQ.Data 轻量数据层之路 使用篇一曲 裸身走天涯(十二)   前言说明: 本篇继续上一篇内容,本节介绍所有相关查询的使用. 主要内容提要:1:单行数据操作 Fill 操作 GetCount操作.2:多行数据操作 Select 操作3:列表绑定控件操作 配合分页控件4:多表查询及绑定 视图及自定义SQL     单行数据操作   一:Fill 填充方法,单行查询 方法原形:public bool Fill(object where) 示例1:直传ID MAction action 

大数据清理软件公司Trifacta融资3500万美元

Trifacta 是一家提供大数据清理软件服务的创业公司,公司刚获得一轮 3500 万美元的融资.Cathay Innovation.Accel Partners.Greylock Partners 和 Ignition Partners 都参与了本轮融资.到目前为止,公司的融资总额已达 7600 万美元.公司主要利用这轮融资进一步拓展公司业务. 一直以来,杂乱的.非结构化的数据都是企业数据治理的心腹之患.尽管许多企业竭尽所能保留下来了各种客户.内部流程及运营方面的数据,但是将这些裸数据变成可供

MySQL数据清理的需求分析和改进

昨天帮一个朋友看了MySQL数据清理的问题,感觉比较有意思,具体的实施这位朋友还在做,已经差不多了,我就发出来大家一起参考借鉴下. 为了保证信息的敏感,里面的问题描述可能和真实情况不符,但是问题的处理方式是真实的. 首先这位朋友在昨天下午反馈说他有一个表大小是近600G,现在需要清理数据,只保留近几个月的数据.按照这个量级,我发现这个问题应该不是很好解决,得非常谨慎才对.如果是通用的思路和方法,我建议是使用冷热数据分离的方式.大体有下面的几类玩法: exchange partition,这是亮点

一个60亿数据表改分区表+数据清理的改进思路

今天有个同学问我一个问题,也是一个实际的案例,我简单分析了一下,发现还是有很多可以考究的地方.仅做参考. 问题是,系统里目前有一个大表,因为历史数据的沉淀,目前有60多亿的数据,不是分区表,现在得到反馈说insert的操作比较满,想优化一下,同时把部分历史数据需要做一些清理. 对于这类操作,要求停机时间尽可能短,有什么好的办法. 对于这个问题看起来问题似乎是很明显的. 目前反应出的问题是Insert慢,可能有下面的几个原因. 1.表索引巨大,索引维护管理要复杂一些 2.表中可能含有一些冗余索引,

Spark Streaming 数据清理机制

前言 为啥要了解机制呢?这就好比JVM的垃圾回收,虽然JVM的垃圾回收已经巨牛了,但是依然会遇到很多和它相关的case导致系统运行不正常. 这个内容我记得自己刚接触Spark Streaming的时候,老板也问过我,运行期间会保留多少个RDD? 当时没回答出来.后面在群里也有人问到了,所以就整理了下.文中如有谬误之处,还望指出. DStream 和 RDD 我们知道Spark Streaming 计算还是基于Spark Core的,Spark Core 的核心又是RDD. 所以Spark Str

CYQ.Data 轻量数据层之路 应用示例二 在线聊天(六)

继上一篇:CYQ.Data 轻量数据层之路 华丽升级 V1.3出世(五),本篇趁周末而且是下班时间看贴人不多,低调让其出手应用一下: 同样为了能一篇介绍完一个示例,我精简挑选了一下,本次的示例为:注册+登陆+在线聊天[省去了私聊部分] 在看此文示例之前,请先看:CYQ.Data 轻量数据层之路 应用示例篇(四) --因为注册+登陆从那直接Copy的,这节就省过了.   当前环境同样是:VS2005+SQL2005,以下进入正题: 一:数据库 起名:Chat 两个表:Users+Message,上