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中重新执行一下即可。