[发明专利]ORACLE数据库中大批量删除数据的方法无效
申请号: | 200910105546.2 | 申请日: | 2009-02-20 |
公开(公告)号: | CN101493842A | 公开(公告)日: | 2009-07-29 |
发明(设计)人: | 徐春生;詹荣国 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 深圳市永杰专利商标事务所 | 代理人: | 曹建军 |
地址: | 518057广东省深圳市南山区*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | oracle 数据库 大批量 删除 数据 方法 | ||
技术领域
本发明属于数据库数据删除领域,具体涉及一种oracle数据库中在大数据量情况下大批量删除数据的方法。
背景技术
在通信领域中,性能管理和告警管理是电信网管系统的重要的两个功能,也是网管系统中产生数据量较多的两个功能。当网管运行一段时间(比如两年)后,现场的网管需要进行版本升级,其中对网管数据库的升级是网管版本升级环节中最耗时最重要的一个环节,网管数据库中大量存在的历史告警数据和性能统计数据会大大增加数据库升级的时间,占有大量磁盘空间,然而这些历史数据中大部分可能已经没有使用价值,因此一般在网管升级之前,都会对历史数据进行一些清理工作,只保留最近一段时间(常常为三个月)的数据,这样既释放了数据库空间,又大大提升了升级效率,减少了升级失败的概率。
对于oracle数据库,现有大数据量删除方法有以下几种:
1.分批删除,逐次提交
这种方法的缺点是效率较低,数据库高水位线无法直接压缩。
2.保留的数据先转移到临时表中,truncate原表,从临时表中移回数据,删除临时表
这种方法的缺点是当保留的数据量达到几十万,并且还包含BLOB、CLOB字段时,效率较低,原始数据转移到临时表中时,会占用较大的数据库表空间。
综上可知,现有大数据量情况下的数据库删除数据方法中,存在删除效率低以及其它如数据库高水位线无法直接压缩的不足和缺陷,所以有必要加以改进。
发明内容
本发明的目的在于提供一种ORACLE数据库中大批量删除数据的方法,有效地解决现有技术中删除效率低,删除时间长的问题,并且在删除过程中可实现磁盘碎片整理以及高水位线的压缩。
为解决上述技术问题,本发明是通过以下技术方案实现的:
一种ORACLE数据库中大批量删除数据的方法,包括如下步骤:
A、根据删除条件分析出保留数据的where条件;
B、使用exp命令以压缩方式将满足where条件的保留数据导出;
C、清空原表;
D、将保留数据导回数据库中。
上述方法中,所述步骤A具体为:根据要删除的数据的条件和现有数据的情况分析出保留数据的where条件(表中所有数据为全集,保留数据为删除数据集合的补集)。
上述方法中,所述步骤B具体为:以步骤A的where条件作为exp命令的query选择项参数,同时使exp命令选择项参数compress=y,将保留数据导出。
上述方法中,所述步骤C具体为:以drop原表或truncate原表的方式清空原表,两种方式效率都很高,都能实现高水位线的压缩和数据库表空间的回收。
上述方法中,所述步骤D具体为:若步骤C采用drop原表的方式清空原表,则使用imp命令重建数据库的原表结构,并将保留数据导回到重建的原表中;若步骤C采用truncate原表的方式清空原表,则使用imp命令将保留数据导回到数据库原表中即可,不需要表重建。
上述方法,还包括步骤E:成功导回保留数据后,如果不需要保存导出的保留数据,则删除导出的保留数据。
使用本发明的ORACLE数据库中大批量删除数据的方法具有以下有益效果:
本发明方法在大数据量情况下大批量删除数据,删除效率高,并且将数据库表的磁盘碎片整理,高水位线压缩操作在删除数据的过程中一次实现完成,不需进行额外的数据库操作。
附图说明
图1是本发明的数据删除方法的流程示意图;
图2是本发明的数据库表数据的流向和状态示意图。
具体实施方式
为了更好地理解本发明,下面结合附图和具体实施例对本发明作进一步地描述。
请参阅图1,本发明数据删除方法流程包括如下步骤:
100、数据删除准备:进行当前删除表的记录总数统计和要删除的记录数量统计,以明确当前删除任务的数据量;
102、是否适用本方法的判断:有以下两种情况本发明方法的删除效率不高,应采用104流程的其它删除方法;
104、若删除全部数据,则直接用truncate语句,效率较高;若要删除的数据量较小,则直接用delete语句可以实现;
106、分析表中得到保留数据的where条件:根据要删除的数据的条件和现有数据的情况分析出保留数据的where条件(表中所有数据为全集,保留数据为删除数据集合的补集);比如要删除2008-7-01日前的历史告警数据,原始删除语句是:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910105546.2/2.html,转载请声明来源钻瓜专利网。