对比数据泵与原始导入导出工具(一)

来源:互联网 发布:诺基亚e63怎么下载软件 编辑:程序博客网 时间:2024/05/16 07:50
Oracle的导入导出工具EXP/IMP由来已久,大部分人对于使用这两个工具也都不陌生。Oracle10g开始推出的数据泵EXPDP/IMPDP,提供了导入导出的性能,也增加了导入导出的功能,但是由于使用时间不长,可能部分人对这个工具不太了解。一直打算写几篇文章,简单描述一下EXP/IMP和EXPDP/IMPDP的差异。

这篇首先从总体上描述一下二者的相同和不同之处。

 

 

EXP工具可以提取数据库中对象的定义和数据,将提取的结果保存到二进制文件当中。而IMP工具则相反,可以将EXP工具生成的二进制文件,导入到数据库中。

EXP/IMP工具被用作一种逻辑备份的工具。EXP/IMP包括三种粒度,表级、用户级和数据库级。

由于EXP导出的格式是二进制的,因此EXP/IMP具有跨平台的能力。因此,小数据量的跨平台迁移,经常会使用EXP/IMP。

oracle的EXP实现了向下兼容,使得Oracle的EXP/IMP可以跨版本执行导入、导出,因此跨版本的升级也经常会用到EXP/IMP。

而EXP/IMP的最大缺点就是效率比较低,如果说EXP还有一个直接路径的导出选项,使得EXP的效率还可以接受,那么IMP的效率实在是没有办法恭维。IMP处理G级别的数据,就已经比较吃力了,如果数据量接近T级,那么IMP的导入时间将十分恐怖。

EXP/IMP工具的另一个缺点就是功能不足。经常使用EXP/IMP就会发现很多不好解决的问题。比如分区表转换表空间的问题,比如导入导出部分逻辑对象等。

而10g开始推出的数据泵EXPDP/IMPDP最大的优点之一就是效率。虽然测试没有达到Oracle宣传的导出导入速度,但是确实比EXP/IMP有了一个量级的提升。效率的提升主要由于几个原因,首先充分利用直接路径方式,使得导入导出的效率大幅提高;第二,导入导出在服务器端完成,避免了网络传输对导出、导入速度的影响;第三,可以通过并行来充分利用系统的CPU和IO资源;第四,优化了默认参数,避免由于用户没有指定最佳的BUFFER参数而影响导入导出性能。

除了上面提到了性能差异外,EXPDP/IMPDP和EXP/IMP的一个主要差异还在于,数据泵不在支持客户端导出、导入方式,所有的导入、导出都在SERVER端完成。这对于提高性能有很大帮助,而且可以避免客户端与服务器端版本、字符集等存在差异而导致的转换问题。不过这种方式对于习惯在客户端导出的用户或者没有权限访问数据库服务器的用户来说,多少有点不是很方便。不过数据泵支持的NETWORK_LINK方式的导出、导入,在一定程度上缓解了这个不便之处。

数据泵另一大有点就是功能强大。并行、过滤、转换、压缩、加密、交互等等,这些功能都是原来传统导入导出工具EXP/IMP所不具备或者欠缺的。并行功能使得效率得到提高;灵活的过滤功能使得数据泵不像EXP/IMP那样以表和索引为主,而是可以处理各种类型的对象,成为一个真正的全对象逻辑备份工具;转换功能使得用户可以在导出、导入过程中灵活定制变更,适应各种不同情况下的导入导出;压缩功能可以得到更小的导出文件;而加密使得导出的DUMPFILE一样可以得到保护;强大的交互功能使得用户可以随时暂停、中止或继续运行数据泵的操作。

如果说数据泵有什么不足之处,那么可能主要有两点。最主要的一点就是它不支持9i以前的版本。这并不是数据泵的错,因为数据泵是10g才推出的,显然让9i支持数据泵是不现实的。但是9i目前仍然是主流版本之一,很多时候需要在9i和10g之间导入导出数据,而这是数据泵无法解决的问题。第二点就是目前BUG还相对比较多,其实这并不是什么大问题,一个新功能的诞生必然伴随大量的bug,即使到现在EXP/IMP也存在很多的bug。不过由于这两个原因的存在,EXP/IMP短时间内还不会退出历史。

原创粉丝点击