您的位置:首页 > 数据库 > Oracle

更改Oracle数据库的编码格式,解决导入时ORA-12899错误

2015-09-16 20:17 731 查看
imp导入数据到ORACLE遭遇ORA-12899错误

数据库版本是Oracle 10G XE,从公司数据库的企业版导入时遭遇ORA-12899错误。

错误信息:

Sql代码  


IMP-00019: row rejected due to ORACLE error 12899  

IMP-00003: ORACLE error 12899 encountered  

ORA-12899: value too large for column "OLP"."ART"."CONTENT" (actual: 242, maximum: 200)  

 

初步断定是字符集问题,中文在UTF-8里占3个字节,ZHS16GBK里占2个字节,而源dmp文件字符集是ZHS16GBK的库到出来的,现在要导入到目标字符集为UFT-8的库里。

修改oracle 10g的字符集

Oracle

修改数据库字符集为:ZHS16GBK

查看服务器端字符集

Sql代码  


SQL > select * from V$NLS_PARAMETERS  

伦理片 http://www.dotdy.com/ 

修改:$sqlplus /nolog

Sql代码  


SQL>conn / as sysdba  

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 ;  

ALTER DATABASE CHARACTER SET ZHS16GBK  

*ERROR at line 1:  

ORA-12712: new character set must be a superset of old character set  

 

报字符集不兼容,此时下INTERNAL_USE指令不对字符集超集进行检查:

Sql代码  


SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;  

SQL>SHUTDOWN IMMEDIATE  

SQL>STARTUP  

 

再次用imp导入,就没有问题了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: