海量数据迁移之sqlldr和datapump的缺点分析(r4笔记第74天)

在数据迁移中,sql*loader和datapump总是作为一些常用的数据迁移方案,自己在经历了一些项目之后,优点就不说了,说点这些方案的缺点,批评不自由,则赞美无意义,所以我在提出了一些失败错误的经验后,会在下一篇中给出这些缺点的解决方案。毕竟解决问题才是最重要的。 使用sql*loader的缺点 可能存在潜在的乱码问题,尤其是对于特定字符集的数据,因为sqlldr可以从客户端导出,如果客户端的语言设置不当,导出的文件会有乱码的隐患。 数据问题,这个是sql*loader使用比较头疼的地方,因为这种加载方式老是感觉比insert的方式差一点,一旦出现错误,可以使用sql*loader提供的特定的接口来对文件修改后,重新部署。 对于lob数据的使用不够方便 如果表中含有clob,blob列,那么使用sql*loader时比较麻烦的,尽管官方说是可以支持的,我看了下繁琐的文档就准备放弃了。 主键冲突 ORA-00001: unique constraint (PRDAPPO.AR1_MEMO_PK) violated 这种错误很明显是由于存在主键冲突的数据导致的。可能表中已经含有一部分数据,再插入一部分数据的时候,结果出现了主键冲突。 外键数据问题/表插入数据的顺序 ORA-02291: integrity constraint (PRDAPPO.CH_OBJECT_ATTRIBUTES_1FK) violated 这种问题比较纠结,主要是由于导入表的顺序不当导致的。 非空约束问题 ERROR at line 3: ORA-29913: error in executing ODCIEXTTABLEFETCH callout ORA-01400: cannot insert NULL into ("PRDAPPO"."CL9_CRD_MNTR_TREAT"."ACT_RSN_CODE") 这种问题比较少见,但是确实存在,如果某些字段的约束不一致,很可能会出现这种问题。 使用Datapump的缺点 约束导致的导入回退 ORA-31693: Table data object "PRDAPPO"."MO1_MEMO":"PMAX_AMAX_EMAX" failed to load/unload and is being skipped due to error: ORA-00001: unique constraint (PRDAPPO.MO1_MEMO_PK) violated Job "PRDAPPO"."SYS_IMPORT_FULL_01" completed with 1 error(s) at 02:34:33 使用datapump比较最怕的就是等待了个把小时,最后dump文件报错回退了,对于约束的问题,可以使用impdp的选项 DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS来导入没有问题的数据。 undo的困扰 ORA-31693: Table data object "MIG_TEST"."MO1_MEMO":"P2_A1000_E3" failed to load/unload and is being skipped due to error: ORA-29913: error in executing ODCIEXTTABLEFETCH callout ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS1' 如果表足够大,几十G,上百G,恰好你的undo大小也在几十G,那么很有可能会出现undo资源不足。这个时候你都不知道该怎么继续了。 资源的相互制约 有些项目中,可能同时使用sql*loader和datapump,一旦这种情况发生,sqlldr和datapump就会互相制约,尽可能多的占用资源,对性能还是有一定的影响。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2015-03-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python区块链

Python爬取100G级别,2000K以上数据量,用mysql还是mongodb?

这个问题我们可以从两个角度去解答。一个是100G的数据量用MySQL和MongoDB在存读取上有什么区别,另一个是数据本身的结构和你要进行的应用来考虑使用哪种数...

953150
来自专栏企鹅号快讯

Domino 9.0.1中全文索引任务的潜在风险

Domino中的全文索引任务是用来更新数据库中的全文索引,这样用户可以更好地利用数据库中的索引来精确地快速查找文档。全文索引必须定期更新,不然新的或更改的文档,...

19870
来自专栏杨建荣的学习笔记

数据迁移中的数据库检查和建议(r2笔记71天)

关于数据迁移,在之前也讨论过一些需要注意的地方,可能林林总总列了不少,都是在数据迁移迁移前和迁移时需要注意的。 http://blog.itpub.net/23...

41950
来自专栏数据和云

高危防范:巧用触发器,实现DDL监控

在数据运维过程中,常常因为DBA的疏忽而使数据安全面临威胁,有些威胁来自数据库外部,如rm操作,而有些威胁则来自数据库内部,如Truncate操作.因此对于数据...

29840
来自专栏好好学java的技术栈

java实现沙箱测试环境支付宝支付和整合微信支付和支付宝支付到ssm(附源码)

下载地址:https://docs.open.alipay.com/270/106291/

58970
来自专栏杨建荣的学习笔记

ADG备库批量查询失败的原因分析(r8笔记第33天)

目前线上有一套环境是10gR2的,采用了一主两备的架构。在其中一个备库上每天凌晨会开放一个窗口运行一些批量的查询,目前使用dg broker会在指定的时间把备库...

37580
来自专栏乐百川的学习频道

Python 爬虫获取某贴吧所有成员用户名

最近想用Python爬虫搞搞百度贴吧的操作,所以我得把原来申请的小号找出来用。有一个小号我忘了具体ID,只记得其中几个字母以及某个加入的贴吧。所以今天就用爬虫来...

226100
来自专栏IT技术精选文摘

MySQL的通用优化方法

本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨在帮助那些没有专职MySQL DBA的企业做好基本的优化工作,至于具体的SQL优化,大部分通过加适...

68780
来自专栏Web项目聚集地

Spring MVC+Spring+Mybatis实现支付宝支付功能(图文详解)

本教程详细介绍了如何使用ssm框架实现支付宝支付功能。本文章分为两大部分,分别是「支付宝测试环境代码测试」和「将支付宝支付整合到ssm框架」,详细的代码和图文解...

29710
来自专栏杨建荣的学习笔记

通过定制orabbix监控分析潜在的Oracle问题 (r6笔记第32天)

在之前的博客中分享过 简单定制Orabbix监控项 http://blog.itpub.net/23718752/viewspace-1769773/ 定...

28540

扫码关注云+社区

领取腾讯云代金券