APP下载

基于Oracle数据库的EXP工具性能调优

2016-08-29孙忠林山东科技大学信息科学与工程学院牛雷山东科技大学信息科学与工程学院学生研究方向数据库

中国科技信息 2016年12期
关键词:缓冲区备份工具

牛 雷 孙忠林山东科技大学信息科学与工程学院牛雷,男,山东科技大学 信息科学与工程学院,学生,研究方向:数据库。



基于Oracle数据库的EXP工具性能调优

牛 雷 孙忠林
山东科技大学信息科学与工程学院
牛雷,男,山东科技大学 信息科学与工程学院,学生,研究方向:数据库。

link

评估值15万

appraisement

行业曲线

industry

数据库备份技术对于数据被破坏后的可修复性,以及预防数据丢失的方面起到了非常重要的作用,而EXP工具是数据库备份常用的工具之一。本文将探索如何对EXP工具的性能进行优化,从而使得数据库文件的备份变得更加高效。从Oracle10g以后,开始支持EXPDP命令进行导出,本文对两种导出方法的优化进行介绍。

随着科学技术的发展,计算机数据库中的数据充当着重要的角色。黑客攻击,系统故障等对计算机数据库造成严重损坏,导致数据严重丢失。一旦数据丢失,将会耗费巨大的工作量去弥补数据,也可能因此造成不可挽回的损失。此时,数据库的备份技术起到至关重要的作用,而备份的效率对数据库的性能又具有很大的影响。对EXP导出工具及使用EXPD可以快速提高备份的效率,是解决大量数据备份时间效率低下的有效工具。

首先对EXP工具的使用进行介绍

在Oracle环境下,exp工具的使用格式为

expusername/password@connStr file=user_date.dmp log=user_date.log

username指的是Oracle数据库用户名,password指的是数据库用户密码,connStr指的是数据库的连接字符串,file为数据库备份后的文件名,log则是表示备份日志文件。

EXP工具参数优化

为EXP设置相应的参数,从而达到优化的目的。

设置buffer参数exp username/password@connStr file=user_date.dmp log=user_date.logbuffer=512000000

buffer的单位是位/bytes,buffer设置的为数据缓冲区的大小,数据缓冲区的大小经试验证明并不是越大越好。

buffer=buffersize

这个参数用来指定缓冲区的大小,以字节为单位,缓冲区用来读取或者装载数据库中的行数。决定了一个被export工具导出的序列中,导出行数的最大值是多少。

buffersize/maximum_row_size

如果将这个参数指定为0,那么导出数据时每次导出一行。当表中含有数据类型LONG,LOB,BFILE,REF,ROWID型的列时,export默认一次导出一行。buffer只应用于常规路径导出,而对直接路径导出不起作用。这个默认设置是为了保证系统运行的独立性。

设置direct参数

exp username/password@connStr file=user_date.dmp log=user_date.logdirect=y recordlength=65536

当使用直接路径导出时,数据直接从磁盘读出到高速缓冲区,然后再写入到导出文件当中。这也同时意味着SQL命令处理层可以被绕过,因为数据已是导出时期望的格式。当使用direct参数时,buffer参数失效,并且direct参数不支持query子句,不支持表空间导出。与recordlength参数(IO缓冲参数)搭配使用。

设置consistent参数

exp username/password@connStr file=user_date.dmp log=user_date.logconsistent=N

consistent参数功能为确定交叉表的一致性。在进行数据库数据导出的过程中,此参数表示是否维持数据库中表结构的一致性。当将此参数设置为Y,在进行导出的过程中,外部系统及相关用户同样可以查询与之相关的数据库表,并且能够获取到一致性数据。在进行导出操作之前修改以及更新的数据不会被外部系统感知,但仍要占用数据库的回滚段。当资源紧张时,将此参数设置为N,此举既减少操作占用的回滚资源,又可提高导出速度。

使用管道方式

UNIX中的管道技术可以加快EXP工具的导出速度。管道是从一个程序进程向另一个程序进程单项传送信息的技术。管道是一种伪文件。它存在于内存中, 用于快速I/O操作。管道是一种存于内存中的伪文件,用来进行快速的输入输出操作。管道的缓冲区采用先进先出的机制,写管道的进程将数据写到缓冲区的头部,读管道进程则读取管道尾部。建立管道的命令为”mknod filename q”,compress 为UNIX数据压缩工具。管道将一个进程的输入作为另一个进行的数据,适用于大数据量导出的情况,利用管道,可以直接生成最终的压缩文件,与不压缩直接导出的时间性能相当。使用管道,不但解决了磁盘空间不足的问题,还省去了压缩的时间,进一步提高了导出数据的时间性能。

导出数据实例:

% mknod /tmp/exp_pipe q # Make the pipe

% compress < /tmp/exp_pipe > export.dmp.Z & # Background compress

膝盖一软,我倒了下去,脸碰到了地板,感觉凉凉的。有什么东西再次重击了我的体侧,我本能地尖叫起来,这是开场以来我第一次喊叫。一种尖锐刺耳的声音,那是别人的吧,好像不属于我。体侧再次遭到重击,我什么也看不见了,连眼前是什么都不知道,一片漆黑。有人喊:“够了!”脑子里突然闪过很多念头,但我一个都没记住。

% exp file=/tmp/exp_pipe # Export to the pipe

EXPDP工具

Expdp一般情况可以替代Exp,但是还无法完全替代,主要是它需要在数据库服务器上执行,而Exp可以在任何一台客户端上执行。另外,Expdp在导出大型分区表(1T以上)的时候,分析时间过长,并且存在一些错误。所以,有些用户仍然会使用Exp来进行数据备份。

数据泵导出与EXP相比有很大的性能提高,其中产生最大影响的就是paralle参数,在使用数据泵的情况下提高导出速度,就必须设置并行参数。

expdp username/passwordfull=y directory=dump dumpfile=orcl_%U.dmpparallel=4

directory参数指定导出文件存放位置,full参数表名进行全库导出,默认为n,dumpfile参数指定导出后的文件名,dumpfile 参数拥有一个通配符 %U,它指示文件将按需要创建,格式将为orcl_nn.dmp,其中nn 从 01 开始,然后按需要向上增加。

那么EXPDP将为parallel创建4个文件,orcl_01. dmp, orcl_02.dmp, orcl_03.dmp, orcl_04.dmp,每个文件的大小会因为进程而不同。通过设置filesize参数就可指定每个文件的最大值。当文件的大小超过最大值时,就会创建一个新的文件。

图1 导出时间比较图

实验

本次实验采用数据来自于北京大学DAIM研究组,数据集来自一个支持用户收藏发布网上资源的共享站点Delicious.com,这类站点支持用户对资源添加标注和关注其他用户等社交功能。本次实验主要利用其记录用户在某个时刻对某个资源的标签记录的数据,对应字段分别为USERID,POSTID,TAGID,DATE1。

实验所用备份步骤简述如下:

(1)开启Oracle数据库服务,打开命令提示符界面;

(2)使用命令EXP及参数或EXPDP进行导出备份操作;

(3)对各个参数下的备份时间进行比较;

(4)得出的时间性能结果图。

时间性能比较

根据导出实验对比,比较在相同的数据大小下,导出工具的时间性能比较。如图1所示。

结语

通过实验可以看出,在较小的数据量的条件下,EXPDP工具的时间性能低于EXP工具导出的时间性能,EXP工具使用不同参数进行优化时,时间性能也有差异,用户可以根据自身需要选择合适的参数,或者使用参数组合来达到加快导出速度的目的。

10.3969/j.issn.101- 8972.2016.12.007

猜你喜欢

缓冲区备份工具
VSAT卫星通信备份技术研究
波比的工具
波比的工具
创建vSphere 备份任务
准备工具:步骤:
基于ARC的闪存数据库缓冲区算法①
“巧用”工具
旧瓶装新酒天宫二号从备份变实验室
一类装配支线缓冲区配置的两阶段求解方法研究
初涉缓冲区