2个oracle文件导入报错处理

原文链接:http://blog.sina.com.cn/s/blog_69a657190101642s.html

高版本导入低版本(向下兼容问题)

当dmp文件是oracle11G导出来,你本机的客户端oracle为10G时,导入数据库不会成功。

  原因:高版本的数据库文件无法向下兼容。

  解决方法:用Madedit编辑器打开dmp文件,把dmp头部关于数据库版本的信息改为你本机10G的数据库信息即可,更改完毕保存。再次执行导入,成功。

低版本导入高版本(字符集问题)

错误信息大概是下面这样的

IMP-00019: 由于 ORACLE 错误 12899 而拒绝行

IMP-00003: 遇到 ORACLE 错误 12899

ORA-12899: 列 "JACKEYJ"."JK_REGISTER"."OPNAME" 的值太大 (实际值: 21, 最大值: 20)

从10g环境下exp出来的数据,imp到11g数据库的时候就出现这个错误。

原因:两个版本的数据库的字符集不同,所以会有这种情况

解决方案:修改oracle 11g的字符集为:ZHS16GBK

以下为sqlplus命令操作。

查看服务器端字符集SQL (查询结果的带有character_set这种关键字的就是了)

select * from V$NLS_PARAMETERS

下面的都是在cmd下操作

sqlplus /nolog  

SQL>conn / as sysdba

若此时数据库服务器已启动,则先执行 SHUTDOWN IMMEDIATE 命令关闭数据库服务器,

然后执行以下命令:

SQL>shutdown immediate

SQL>STARTUP MOUNT

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 CHARACTER SET ZHS16GBK

ERROR at line 1:ORA-12721: operation cannot execute when other sessions are active

若出现上面的错误,使用下面的办法进行修改,使用INTERNAL_USE可以跳过超集的检查

SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK

SQL>SHUTDOWN IMMEDIATE

SQL>STARTUP

再次使用导入,问题解决

imp导入

基本命令为

imp 用户名/口令@实例(默认为orcl) file=文件路径(不要有中文)   full=y

猜你喜欢

转载自blog.csdn.net/a2940093904/article/details/88856809