oracle导入数据库报错:IMP-00019: 由于 ORACLE 错误 12899 而拒绝行 IMP-00003: 遇到 ORACLE 错误 12899 _MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3185 | 回复: 0   主题:  oracle导入数据库报错:IMP-00019: 由于 ORACLE 错误 12899 而拒绝行 IMP-00003: 遇到 ORACLE 错误 12899         下一篇 
koei666
注册用户
等级:新兵
经验:61
发帖:63
精华:0
注册:2012-1-9
状态:离线
发送短消息息给koei666 加好友    发送短消息息给koei666 发消息
发表于: IP:您无权察看 2015-4-13 9:13:17 | [全部帖] [楼主帖] 楼主

情景重现:
从oracle 10g环境下exp出来的数据,imp到10g数据库的时候就出现下面这个错误。
IMP-00019: 由于 ORACLE 错误 12899 而拒绝行
IMP-00003: 遇到 ORACLE 错误 12899
ORA-12899: 列 "JACKEYJ"."JK_REGISTER"."OPNAME" 的值太大 (实际值: 21, 最大值: 20)
列 1 523
可能的原因:操作系统类型不同导致的。

解决方法:
修改oracle 10g的字符集

 Oracle


修改数据库字符集为:ZHS16GBK

在oracle目录下 打开应用程序开发--> SQL Plus,然后:

查看服务器端字符集SQL > select * from V$NLS_PARAMETERS

修改:$sqlplus /nolog

SQL>conn / as sysdba  (ps: 在cmd中可以直接粘贴)


若此时数据库服务器已启动,则先执行 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  RA-12721: operation cannot execute when other sessions are active


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

SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
ORA-12712: new character set must be a superset of old character set
RROR at line 1:


2、结果报错,提示新字符集必须是老字符集的超集。

于是强制转换

>ALTER DATABASE character set INTERNAL_USE ZHS16GBK;


最后步骤:

>shutdown immediate;
>STARTUP;


--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论