impdp导入中碰到的两个问题

前两天,需要将远程一个测试库用expdp导出的数据dump导入到本地的一个测试环境中,其中碰到了一些问题,值得小结下。

环境介绍

1. 数据量:10+表,<1000万的数据,dump文件大约400多MB

2. 源库和目标库都是11.2.0.4

3. 字符集不同,源库字符集是GBK,目标库字符集是UTF-8

导入命令

test/test directory=exp_dump dumpfile=test.dmp logfile=test.log remap_schema=test1:test2 remap_tablespace=TBS_DAT_1:TBS_DAT_2,TBS_IDX_1:TBS_IDX_2

导入过程中碰到的两个问题

(1) 中文字符集转换

KUP-11007: conversion error loading table "TEST"."T_PSR"
ORA-12899: 列 REASON_CODE 的值太大 (实际值: 21, 最大值: 20)
KUP-11009: data for row: REASON_CODE : 0X'BABDBFD5C6F7C8DDC1BFCFDED6C6'

这里涉及到了字符集转换的问题,中文在GBK字符集中占2位,但在UTF-8字符集中占3位,所以在GBK中保存小于20个字符的情况下,导入到了UTF-8的库中,就可能因为需要额外的字符空间导致超出字段长度定义,报了ORA-12899的错误。

(2) 主外键关联

ORA-31693: Table data object "TEST"."T_ITE" failed to load/unload and is being skipped due to error:
ORA-29913: error in executing ODCIEXTTABLEFETCH callout
ORA-02291: integrity constraint (TEST.FK_ITE_REF_PSR) violated - parent key not found

由于有些表之间是存在主外键关联的,expdp导出的时候选择了data_only仅导出数据,impdp导入的时候会因未插入主键记录而插入外键记录,出现ORA-02291的错误,对于这种情况可以选择先禁止主外键关联,导入后再恢复关联。

操作顺序

(a) 导入前,执行如下SQL找到需要禁止的外键关联

select 'ALTER TABLE '||TABLE_NAME||' DISABLE CONSTRAINT '||constraint_name||';' 

from user_constraints WHERE CONSTRAINT_TYPE='R';

(b) 执行(a)的结果SQL

(c) 导入后,执行如下SQL找到需要恢复的外键关联

select 'ALTER TABLE '||TABLE_NAME||' ENABLE NOVALIDATE CONSTRAINT '||constraint_name||';' 

from user_constraints WHERE CONSTRAINT_TYPE='R';

NOVALIDATE参数不会验证已存储的数据,但未来再插入的记录则会遵循主外键关联的关系。

总结

1. 使用10g以上版本提供的expdp/impdp数据泵导入导出工具,较以往的exp/imp工具,无论是在参数的可选择性上,还是速度和压缩比上,都有了不小的改进,提供更为方便快速的数据导入导出方法给我们。

2. 导入导出可能碰到最多的问题,字符集转换算是其中之一,要明确导入导出数据对字符集的依赖程度,才能确保数据导入导出的正确。

3. 对于有主外键关联的数据,如果选择data_only仅导出数据,那么可在导入前禁止约束,这样导入过程不会受到主外键关联的影响,导入后可以恢复约束,保证约束的正确。

时间: 2024-07-30 10:55:52

impdp导入中碰到的两个问题的相关文章

oracle 10g数据泵和导入导出性能对比(三)提高IMPDP导入效率的方法

前一段时间在一次迁移中同时用到了数据泵和EXP,发现二者效率的差别还是相当大的.这里通过一个例子简单比较一下. 这篇文章介绍提高IMPDP导入效率的方法. 上面一篇文章的测试中发现IMPDP的导入速度和IMP导入速度相差无几.而Oracle在介绍数据泵的时候,提到IMPDP的导入速度最高是IMP的10倍.不过好在IMPDP还是可以优化调整的,那就是通过设置PARALLEL来提高IMPDP的并行度. SQL> show parameter cpu NAME TYPE VALUE ---------

oracle 10g数据泵和导入导出性能对比(二)IMP和IMPDP导入的区别

前一段时间在一次迁移中同时用到了数据泵和EXP,发现二者效率的差别还是相当大的.这里通过一个例子简单比较一下. 这篇文章比较一下IMP和IMPDP导入的区别. 前面对比了EXP和数据泵的导出,可以看到,数据泵导出速度与直接路径导出相比,速度并没有本质的提高,下面看看数据泵的导入方式与IMP的区别. 导入的DMP文件就用上面导出是得到的结果,先看看IMP的导入速度: $ sqlplus "/ as sysdba" SQL*Plus: Release 10.2.0.3.0 - Produc

java 继承-一个java继承中碰到的菜鸟问题

问题描述 一个java继承中碰到的菜鸟问题 public class Parent { public String a; public String b; public Parent getA(){ System.out.println("PPPPPPPPP"); return this; } public void Test(){ System.out.println(getA().a); System.out.println(getA().b); } } public class

数据泵IMPDP 导入工具的使用

--================================= --数据泵IMPDP 导入工具的使用 --=================================         数据的导入导出时数据库经常处理的作业之一,Oracle 提供了IMP和IMPDP以及SQL*Loader等工具来完成数据的导入工作,其中IMP服务于早期的9i之前的版本,在10g及后续版本,Oracle 提供了数据泵高速导入工具,本文主要介绍IMPDP的使用方法,关于高速导出工具请参照:数据泵EXPD

Oracle datapump expdp/impdp 导入导出数据库时hang住

   最近在导出schema级别的数据时被hang住,不得不停止当前的导出作业,如果你有类似的问题,请继续往下看.  1.问题描述    导出整个schema时数据库被hang住,如下所示    符号">"是由SecureCRT设定的每300秒发送一次    oracle@Dev-DB-04:~> expdp goex_admin/xxx directory=db_dump_dir dumpfile=gobo2.dmp logfile=gobo2.log schemas=g

oracle 11g impdp导入表数据中文不乱码,字段注释中文乱码

问题描述 oracle 11g impdp导入表数据中文不乱码,字段注释中文乱码 oracle 11g impdp导入表数据中文不乱码,字段注释中文乱码,原数据库字符编码AMERICAN_AMERICA.AL32UTF8,目标数据库字符编码AMERICAN_AMERICA.UTF8,百度的方法更改客户端字符集各种情况均已尝试,均以失败告终,望各路达人指导! 解决方案 Oracle 11g OME 中文按钮乱码ORACLE 11G中PLSQL中文显示乱码.Linux下sqlplus查询中文乱码or

基于SQL Server中如何比较两个表的各组数据 图解说明_MsSql

开始 前一阵子,在项目中碰到这样一个SQL查询需求,有两个相同结构的表(table_left & table_right),如下: 图1. 检查表table_left的各组(groupId),是否在表table_right中存在有一组(groupId)数据(data)与它的数据(data)完全相等. 如图1. 可以看出表table_left和table_right存在两组数据完整相等: 图2. 分析 从上面的两个表,可以知道它们存放的是一组一组的数据:那么,接下来我借助数学集合的列举法和运算进行

[20161002]impdp导入很慢.txt

[20161002]impdp导入很慢.txt --如果在导入前表以及对应索引已经存在,impdp导入(使用参数TABLE_EXISTS_ACTION=append)要维护索引,这样在导入时产生大量日志,比 --没有表存在的情况下慢很多,通过例子来说明. 1.环境: SCOTT@test01p> @ ver1 PORT_STRING                    VERSION        BANNER                                          

【RAC】 RAC For W2K8R2 安装--安装过程中碰到的问题(九)

[RAC] RAC For W2K8R2 安装--安装过程中碰到的问题(九) 一.1  BLOG文档结构图       一.2  前言部分   一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① RAC for windows 2008R2 的安装 ② rac环境下共享存储的规划和搭建 ③ starwind软件的应用 ④ VMware workstation 如何做共享存储 ⑤ rac数据的静默安装和dbca静默建库