oracle导入数据库报错:IMP-00019: 由于 ORACLE 错误 12899 而拒绝行 IMP-00003: 遇到 ORACLE 错误 12899
2016-05-31 17:00
543 查看
主要是字符集 成 导入的Oracle服务器的字符集 对应不上.
以下方案为是修改服务器的字符集. 这样会影响之前的Oracle其他数据库的数据显示(正式服务器慎用)
个人认为应该修改导出文件的字符集比较合理一些. 没测试过.
情景重现:
从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;
引用: http://www.xuebuyuan.com/2070423.html
以下方案为是修改服务器的字符集. 这样会影响之前的Oracle其他数据库的数据显示(正式服务器慎用)
个人认为应该修改导出文件的字符集比较合理一些. 没测试过.
情景重现:
从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;
引用: http://www.xuebuyuan.com/2070423.html
相关文章推荐
- ORACLE 11g EM 网页显示按钮上的文字为乱码
- Oracle ACFS Support on Linux詳解
- Oracle 数据库的对象定义操作(DDL语句)
- Oracle查询被锁定表以及解锁
- oracle表空间
- oracle分区表备份恢复
- .net操作Oracle数据库步骤及方法
- ORACLE SQL 分组
- Oracle varchar2 长度
- Oracle ROWNUM用法和分页查询总结
- mysql和oracle查询排序
- Oracle HS (Heterogeneous Services)深入解析 及协同Gateway工作流程
- oracle调优笔记——归档
- oracle SQL 错误: ORA-02014: 不能从具有 DISTINCT, GROUP BY 等的视图选择 FOR UPDATE
- oracle常用分析函数
- Oracle 使用Job详解
- Oracle v$nls_parameters 和 nls_database_parameters 区别
- Oracle修改sequence的初始值
- oracle11g出现错误,监听服务启动后停止。某些服务未由其他服务或程序使用时将自动停止
- Oracle限权管理