ORACLE数据库中大批量删除数据的方法.pdf

上传人:62****3 文档编号:1035514 上传时间:2018-03-27 格式:PDF 页数:8 大小:324.84KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910105546.2

申请日:

2009.02.20

公开号:

CN101493842A

公开日:

2009.07.29

当前法律状态:

驳回

有效性:

无权

法律详情:

发明专利申请公布后的驳回IPC(主分类):G06F 17/30申请公布日:20090729|||实质审查的生效|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

中兴通讯股份有限公司

发明人:

徐春生; 詹荣国

地址:

518057广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦A座6层

优先权:

专利代理机构:

深圳市永杰专利商标事务所

代理人:

曹建军

PDF下载: PDF下载
内容摘要

本发明公开了一种ORACLE数据库中大批量删除数据的方法,其包括如下步骤:A.根据删除条件分析出保留数据的where条件;B.使用exp命令以压缩方式将满足where条件的保留数据导出;C.清空原表;D.将保留数据导回数据库中。步骤C中以drop原表或truncate原表的方式清空原表,能实现高水位线的压缩和数据库表空间的回收。本发明方法在大数据量情况下大批量删除数据,删除效率高,并且将数据库表的磁盘碎片整理,高水位线压缩操作在删除数据的过程中一次实现完成,不需进行额外的数据库操作。

权利要求书

1.  一种ORACLE数据库中大批量删除数据的方法,其特征在于,包括如下步骤:
A、根据删除条件分析出保留数据的where条件;
B、使用exp命令以压缩方式将满足where条件的保留数据导出;
C、清空原表;
D、将保留数据导回数据库中。

2.
  根据权利要求1所述的ORACLE数据库中大批量删除数据的方法,其特征在于,所述步骤B具体为:
以步骤A的where条件作为exp命令的query选择项参数,同时使exp命令选择项参数compress=y,将保留数据导出。

3.
  根据权利要求1或2所述的ORACLE数据库中大批量删除数据的方法,其特征在于,所述步骤C具体为:
以drop原表或truncate原表的方式清空原表。

4.
  根据权利要求3所述的ORACLE数据库中大批量删除数据的方法,其特征在于,所述步骤D具体为:
若步骤C采用drop原表的方式清空原表,则使用imp命令重建数据库的原表结构,并将保留数据导回到重建的原表中;若步骤C采用truncate原表的方式清空原表,则使用imp命令将保留数据导回到数据库原表中。

5.
  根据权利要求4所述的ORACLE数据库中大批量删除数据的方法,其特征在于,还包括步骤E:成功导回保留数据后,如果不需要保存导出的保留数据,则删除导出的保留数据。

说明书

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日前的历史告警数据,原始删除语句是:
Delete from HISTORYALARM where happentime<to_date(‘2008-07-01  00:00:00’,‘YYYY-MM-DD HH24:MI:SS’);
可以得到保留数据的where条件为:
where happentime>=to_date(‘2008-07-01  00:00:00’,‘YYYY-MM-DD HH24:MI:SS’);
108、使用exp命令的表备份模式将满足上步操作得到的where条件的记录导出:106步骤的where条件作为query选择项参数,同时以压缩方式(选择项参数compress=y),将删除数据表中的保留数据导出到磁盘空间上;导出命令如下:
exp user/pwd query=where条件tables=表名compress=y file=导出文件;
需要注意的是,在where条件中一般都会有空格,而命令行下就会被看成几个命令行参数,需要用单引号或双引号将整个where条件括起来;
110、drop原表或清空原表记录:清空原表有几种方式,效率都很高,都能实现高水位线的压缩和数据库表空间的回收,如
1)直接drop原表的方式,在操作导回保留数据时,先使用imp命令重建数据库的原表结构,使用DDL的sql:drop table HISTORYALARM;
2)使用truncate原表的方式,在操作导回保留数据时,只要导入数据,不需要表重建,使用DDL的sql:truncate table HISTORYALARM;
112、使用imp命令将保留数据导回数据库:
imp user/pwd fromuser=user tables=表名file=导出文件ignore=y;
114、根据情况决定是否删除导出的保留数据;
116、如果不需要保存导出的保留数据,则删除导出的保留数据。
118、删除数据成功,并且成功实现数据库表高水位线的压缩和表空间碎片整理。
请参阅图2,该图是本发明的数据库表数据的流向和状态示意图,其详细解释如下:
状态1、删除前的状态,表中数据分为要删除的数据(即删除数据)和需要保留的数据(即保留数据),其中数据总量和删除数据的量都是很大的数据量;
状态2、将保留数据导出,由于使用压缩的方式,并且不需要额外占用数据库数据表空间,只要占用操作系统磁盘空间即可,效率较高,失败的概率较低;
状态3、truncate或drop原表后,数据库表空间得以回收;
状态4、将保留数据导回数据库表,由于数据库表空间回收已经完成,导入数据库要求的表空间肯定足够;
状态5、数据库表中只剩保留数据,而且高水位线得到了压缩。
Oracle数据库中大数据量情况下大批量数据删除,使用传统的删除方法,删除效率较低。改用本发明方法,可以较大的改善删除速度,提高删除效率,并在删除过程中实现了数据库表的高水位线的压缩。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,应当指出,对于本领域的普通技术人员来说,凡是本发明的精神和原则之内所作的任何修改、等同替换或改进等,均应包含在本发明的保护范围之内。

ORACLE数据库中大批量删除数据的方法.pdf_第1页
第1页 / 共8页
ORACLE数据库中大批量删除数据的方法.pdf_第2页
第2页 / 共8页
ORACLE数据库中大批量删除数据的方法.pdf_第3页
第3页 / 共8页
点击查看更多>>
资源描述

《ORACLE数据库中大批量删除数据的方法.pdf》由会员分享,可在线阅读,更多相关《ORACLE数据库中大批量删除数据的方法.pdf(8页珍藏版)》请在专利查询网上搜索。

本发明公开了一种ORACLE数据库中大批量删除数据的方法,其包括如下步骤:A.根据删除条件分析出保留数据的where条件;B.使用exp命令以压缩方式将满足where条件的保留数据导出;C.清空原表;D.将保留数据导回数据库中。步骤C中以drop原表或truncate原表的方式清空原表,能实现高水位线的压缩和数据库表空间的回收。本发明方法在大数据量情况下大批量删除数据,删除效率高,并且将数据库表的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1