前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据迁移工具简单分析 (r2笔记59天)

数据迁移工具简单分析 (r2笔记59天)

作者头像
jeanron100
发布2018-03-14 16:20:51
6100
发布2018-03-14 16:20:51
举报

exp/imp

对于数据结构的复制和同步,还是比较理想的工具。

在数据量比较小的情况下,这个工具的性能要远远好于datapump,而且重点推荐,他对于各种常用数据类型的支持还是很不错的。

有一些特性,在某种程度上要好于datapump,在做数据迁移的时候,commit特性还是很重要的。因为通过datapump碰到了很多undo空间不足带来的问题。

datapump

在10g版本开始,就开始推荐使用的datapump,算是对exp/imp的补充说明。在使用数据量中等的数据迁移中,是比较好的方案,它有几个亮点的特性,一个就是并行,能够在数据导出导入的时候开启多个并行加速,还有direct选项,这一点上合exp没有太大的差别,个人比较喜欢的是remap选项,比如某个表中还有lob字段,从源库中导出的时候,表空间的信息就在dump文件里,如果导入的环境没有指定的表空间,那基本上就没有直接的解决方案了,要么临时创建需要的表空间,然后在导入成功后,尝试做move操作。

这一点在datapump而言,就不是事了,remap选项很轻松的解决了这个问题。

当然了,datapump是基于服务端的,需要一些其他的依赖因素,在做lob的数据导入的时候速度比imp至少快10倍以上。

sql*loader

可以理解sqlldr是基于客户端的,而言这个工具可能更具有通用性,因为一些数据在它面前都是可扩展的,我们可以尝试从sqlserver中导出数据,然后通过sqlldr来做为数据的导入,sql*loader最快的方式就是开启并行+direct,但是对于lob数据的处理还是需要做额外的工作,对于数据结构的复制而言,就无能为力了。如果作为纯粹的数据的导入,还是很好的工具。

比较纳闷的是,sqlldr作为可扩展的数据导入工具,oracle为什么没有出类似sqlldr这样的数据导出工具,因为exp/expdp导出的是二进制文件,生成平面文件还是有一定的距离,在tom的网站答疑中,他提供了一个简单的pl/sql版本的工具,大家有兴趣可以参考。

oracle_loader

外部表在较新的版本中开始出现,可能大家用的比较多的还是通过oracle_loader来读取alert日志的信息,其实在某种程度上而言,oracle_loader可以在某种程度上作为sqlldr的补充和加强。因为我们可以和快的创建一个外部表。而无须消耗额外的数据空间,相比于sqlldr生成的dump而言,基于oracle_loader创建的外部表更加的具体,我们可以在数据导入前做一些相关的数据检查和稽核工作。

oracle_datapump

oracle_datapump算是对datapump的一个加强版本,因为生成的dump文件类似datapump,但是生成的dump可移植性就好的多,我们可以直接copy dump到外部表相关的目录下,如果外部表定义中的dump文件名没有变化的话,直接拷贝dump,然后可以无需做其他操作就加载数据。

insert

不管怎么样,insert还是最终的数据加载方式,不过在条件允许的情况下,noogging+append+parallel还是个人认为最简洁,最直接的方式。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-08-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档