海量数据迁移之sqlldr和datapump的缺点分析

简介: 在数据迁移中,sql*loader和datapump总是作为一些常用的数据迁移方案,自己在经历了一些项目之后,优点就不说了,说点这些方案的缺点,批评不自由,则赞美无意义,所以我在提出了一些失败错误的经验后,会在下一篇中给出这些缺点的解决方案。
在数据迁移中,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就会互相制约,尽可能多的占用资源,对性能还是有一定的影响。
    
目录
相关文章
|
存储 SQL Oracle
Oracle使用expdp/impdp实现全库导入导出的整体流程
Oracle的全库导入,首先一点必须先创建数据库,创建了数据库,才能往该数据库导入所有数据。相对来说,使用Oracle进行数据导入导出还很有些“麻烦”的,大多数资料上来就是......
6045 0
Oracle使用expdp/impdp实现全库导入导出的整体流程
|
11月前
|
存储 Oracle 关系型数据库
Oracle海量数据优化-02分区在海量数据库中的应用-更新中
Oracle海量数据优化-02分区在海量数据库中的应用-更新中
74 0
|
11月前
|
SQL 存储 Oracle
Oracle海量数据优化-01分区的渊源
Oracle海量数据优化-01分区的渊源
48 0
|
SQL 监控 API
TSQL:让监控分析更简单更高效
阿里时序时空数据库TSDB最新推出TSQL,支持标准SQL的语法和函数。用户使用熟悉的SQL,不仅仅查询更简单易用,用户还可以利用SQL强大的功能,实现更加复杂的计算分析。
4374 0
|
SQL 新零售 监控
阿里数据库性能诊断的利器——SQL全量性能数据
在业务数据库调优过程中,如果数据库能记录执行过的每个SQL的性能信息,那对应用诊断性能异常问题会很有帮助。传统商业数据库在这方面做了一些探索。 阿里数据库内核产品能输出全量SQL执行性能数据,数据库的PaaS平台在这些数据基础上可以开发自动化数据库性能诊断产品。
2455 0