环境描述:
源数据库环境:
    操作系统:Windows SERVER 2008R2
    数据库版本:单实例 ORACLE 11.2.0.1
目标端数据库环境:
    操作系统:redhat linux 6.5 x86 64bit
    数据库版本:ORACLE 11g RAC 11.2.0.4
 
故障描述:
从源数据库expdp导出数据,然后往目标数据库impdp导入的时候报错:
ORA-02374: conversion error loading table "QBJMES"."PROJECT"
ORA-12899: value too large for column PROJECT_SPEC (actual: 103, maximum: 100)
ORA-02372: data for row: PROJECT_SPEC : 0X'3730B6A1BCB6302E382A302E362A323035302A39363028312E'
 
故障分析:
    源数据库字符集: zhsgbk16
    目标端数据库字符集:al32utf8
 
zhsgbk16 和 utf8 对数据编码之后,存储格式不同,对于中文来讲,gbk存放一个汉字占用2个字节,utf8存放一个汉字占用3个字节,这样就会导致,比方说:原先GBK字符编码的数据库中的某张表中,存放中文的字段:colum001的类型是varchar 长度为200 ,并且该字段的大多数行的现有数据长度基本上在180个字节,那么该表导入UTF8编码的数据库中时,该字段原先存储的大多数180个字节的汉字,就需要180*3/2=270个字节左右的字符长度才能正常存放;而此时在执行impdp导入操作的时候,表结构是不会改变的,也就是原先的字段定义colum001的长度还是保持着200,因此在导入的时候,就会报错,出现上述错误信息。
 
处理方式:
第一种:重新导出,导入
在源库执行导出操作之前,把qbjmes.project 字段改成超过103  。
然后再往目标库导入的时候,就不会报错了。
 
第二种:清空报错表的数据,修改相关字段的长度,然后重新导入只导入该表的数据。
truncate table V_PS_STAFFPOS_REPTO_PUB_MT;
alter table V_PS_STAFFPOS_REPTO_PUB_MT modify(POST_NAME VARCHAR2(60));
然后再重新导入(只导入数据)。
 

第三种:如果不想改变目标端数据库的字符集,那么修改源数据库字符集(更改数据库字符集的操作不建议使用),然后执行重新导出操作,详细的步骤如下:

SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP MOUNT EXCLUSIVE;

SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;

SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;

SQL>ALTER DATABASE OPEN;

SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;

SQL>SHUTDOWN immediate;

SQL>startup;

其他参考:

http://blog.sina.com.cn/s/blog_50225015010117yr.html

oracle跨平台数据迁移 expdp/impdp 字符集问题 导致ORA-02374 ORA-12899 ORA-02372的更多相关文章

  1. Oracle数据迁移expdp/impdp

    Oracle数据迁移expdp/impdp目的:指导项目侧自行进行简单的数据泵迁移工作. 本文实验环境:Oracle 11.2.0.4,利用数据库自带的scott示例用户进行试验测试. 1.首先需要创 ...

  2. Oracle使用数据泵 (expdp/impdp)实施迁移

    实验环境: 1.导出环境:RedHat6.4+Oracle 11.2.0.4.0,利用数据库自带的scott示例用户进行试验测试. Directory:wjq à /tmp/seiang_wjq 2. ...

  3. ORACLE 数据泵 expdp/impdp

    ORACLE 数据泵 expdp/impdp 一.概念 Oracle Database 10g 引入了最新的数据泵(Data Dump)技术,数据泵导出导入 (EXPDP 和 IMPDP)的作用: 1 ...

  4. Oracle使用数据泵导入/导出数据(expdp/impdp)

    Oracle使用数据泵导入/导出数据(expdp/impdp) A电脑上的操作(expdp数据导出) 运行cmd: 登录数据库,输入命令:sqlplus 使用管理员角色登录需要在用户名后加" ...

  5. MS SQL到Oracle的数据迁移笔记

    MS SQL到Oracle的数据迁移笔记 一.任务背景 旧系统使用MS SQL Server数据库,新系统使用Oracle数据库,现在需要将旧系统中的数据迁移到新系统中,旧数据按照约定的规则转换后,能 ...

  6. 数据库迁移expdp impdp 与 OGg 搭建

    1.long 字段的无法使用OGG 同步 2.clob字段的导入导出Bug , 生产使用network-link 导入导出太慢了,本地导入导出速度会快3到4倍 .但是测试环境的情况却相反 测试环境和生 ...

  7. Oracle 数据库备份还原(Expdp/impdp)记录

    最近公司将原数据库服务器切换.之前没整过这块,也是一堆的度娘.经过不停的摸索,终于成功了.现在将这份艰辛记录下来,方便自己以后查阅的同时,方便有类似需求的同学参考. 我们此次切换共分:ERP.LOS. ...

  8. Oracle 10g Data Pump Expdp/Impdp 详解

    Data Pump 介绍 在第一部分看了2段官网的说明, 可以看出数据泵的工作流程如下: (1)在命令行执行命令 (2)expdp/impd 命令调用DBMS_DATAPUMP PL/SQL包. 这个 ...

  9. 记一次简单的Oracle离线数据迁移至TiDB过程

    背景 最近在支持一个从Oracle转TiDB的项目,为方便应用端兼容性测试需要把Oracle测试环境的库表结构和数据同步到TiDB中,由于数据量并不大,所以怎么方便怎么来,这里使用CSV导出导入的方式 ...

随机推荐

  1. 5-具体学习git--分支冲突,merge合并

    修改1.py: 然后提交修改: git commit -am "change 4 in master" 之后移到dev分支上: 哎呀,这个乱了. 人家意思是都基于c1分出来两个枝, ...

  2. SpringBoot中用Fastjson替换默认的Jackson

    一:前言 经过测试,Jackson有很多不合人意的地方,因此建议用Fastjson来替换: 二:Jackson的坑 先定义实体类: @Data @AllArgsConstructor @NoArgsC ...

  3. java术语(PO/POJO/VO/BO/DAO/DTO)

    PO(persistant object) 持久对象在o/r 映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据库 ...

  4. AngularJS封装UEditor

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  5. 基于MySQL自增ID字段增量扫描研究

    目录 目录 1 1. 问题 1 2. 背景 1 3. InnoDB表 2 3.1. 自增ID为主键 2 3.2. 自增ID为普通索引 4 3.3. 原因分析 7 4. MyISAM表 8 4.1. 自 ...

  6. (转)使用 vs.php 调试PHP

    转自:http://www.jb51.net/article/24618.htm   早先在asp横行的年代,php和asp一样,大都都是html中夹杂代码,说实话,这时候IDE的确用处不是很大,倒是 ...

  7. C语言注意点汇总

    计算机的一切源头都是0和1,其中0:断电,1:有电. 计算机语言发展史:机器语言--汇编语言--高级语言.机器语言0.1直接对硬件起作用.汇编语言,给机器语言添加了一些符号,使其更易于让人理解.记忆. ...

  8. hdu 1541

    因为y的输入是从小到大,所以不用考虑y坐标的问题 只考虑x坐标就行 还有个小细节就是0<=x,y,<=32000  x和y取0的时候树状数组处理不到 x++就行了 #include < ...

  9. android 三种定时器的写法

    //两秒后执行new Handler().postDelayed(new Runnable() { @Override public void run() { --todo }}, 2000); -- ...

  10. hive 修复分区、添加二级分区

    我们在之前的文章中,介绍了二级分区,混合分区,静态分区,动态分区的区别和建表. 今天我们聊下,当我们建好分区表.并且通过程序在表的分区目录(location)下,写入了文件. 如何在hive中查询到插 ...