Linux ·

Oracle 11g导入到10g引起的错误

环境介绍
老环境 新环境 
操作系统:RedHat5.8 64位 redhat6.4 64位
数据库版本:Oracle 10.2.0.4 64位 oracle 11.2.0.4 64位

背景:之前有一套老的数据库rac是基于oracle10g搭建,跑了几年了。现在前端应用程序准备升级,考虑到前端应用程序使用的新数据库与老环境的数据库有一些差异,准备将新环境所用数据库导入到老环境中去,这里有一个跨版本导入的问题;另外一种方式就是将老环境数据库升级到与新环境一样的版本,考虑升级所带来各种潜在问题以及现场环境等因素。与项目负责人沟通后决定采用第一种方式。现将测试结果记录如下:

1、在oracle 10g环境中通过exp将11g数据库导入到本地,报错如下:

Encountering errors in Export logfile

EXP-00008: Oracle error # encountered

ORA-01455: converting column overflows integer datatype

2、在11g环境中用exp将导出数据,再通过imp user/password@10g远程的方式导入,报错如下:

IMP-00015: 由于对象已存在

说明:导入到10g中之前,确认10g没有任务相关用户对象,这种方式导致有一些表没有导入,估计是因为clob字段导致的。

3、在11g环境中用expdp并指定version将数据导出,传到10g中去,再通过impdp并指定version将数据导入,报错如下:

expdp user/password directory=impdp_dir dumpfile=file.dmp version=10.2.0.4(要导入到10g中的版本号)

impdp user/password directory=impdp_dir dumpfile=file.dmp version=10.2.0.4

ORA-39139: Data Pump does not support XMLTYPE objects in version 10.2.0.4 TABLE_DATA:"test"."table_name" will be skipped.

说明:这种方式有一张导入时直接跳过,因这张表中没有数据,直接将创建表的语句在10g中重新执行一下即可。

参与评论