当前位置: 首页 > news >正文

海量数据迁移之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就会互相制约,尽可能多的占用资源,对性能还是有一定的影响。

相关文章:

  • mongoDB初探第一篇(r4笔记第75天)
  • 通过单例模式模拟RAC连接 (r4笔记第76天)
  • 特殊的物化视图刷新 (r4笔记第77天)
  • 总结nmon的诸多优点 (r4笔记第78天)
  • 不要成为技术的奴隶(二) (r4笔记第79天)
  • 清华梦的粉碎读后感--论理想主义者王垠(r4笔记第80天)
  • 浅谈Hadoop (r4笔记第81天)
  • MongoDB初探第二篇 (r4笔记第82天)
  • 大话UML中类之间的关系 (r4笔记第83天)
  • 关于Oracle的技术问答 (r4笔记第85天)
  • 【非原创】完全用Linux工作(下)(r4笔记第86天)
  • 【非原创】完全用Linux工作(上)(r4笔记第86天)
  • 一条delete语句的调优(r4笔记第86天)
  • 【非本人原创】突然35岁:捡点我的职业生涯(下)(r4笔记第87天)
  • 【非本人原创】突然35岁:捡点我的职业生涯(上)(r4笔记第87天)
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【剑指offer】让抽象问题具体化
  • Angular 4.x 动态创建组件
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • javascript 总结(常用工具类的封装)
  • js如何打印object对象
  • Linux CTF 逆向入门
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • TypeScript实现数据结构(一)栈,队列,链表
  • 服务器之间,相同帐号,实现免密钥登录
  • 基于遗传算法的优化问题求解
  • 如何在 Tornado 中实现 Middleware
  • 什么软件可以剪辑音乐?
  • 时间复杂度与空间复杂度分析
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 数据库巡检项
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • #Z0458. 树的中心2
  • (1)SpringCloud 整合Python
  • (2020)Java后端开发----(面试题和笔试题)
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (接口封装)
  • (生成器)yield与(迭代器)generator
  • (算法)Travel Information Center
  • (算法二)滑动窗口
  • (一)插入排序
  • (转)linux 命令大全
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)程序员技术练级攻略
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转)项目管理杂谈-我所期望的新人
  • .chm格式文件如何阅读
  • .NET Core 中插件式开发实现
  • .Net Core 中间件验签
  • .NET MVC之AOP
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET/C# 获取一个正在运行的进程的命令行参数