更改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导入,就没有问题了。
数据库版本是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导入,就没有问题了。
相关文章推荐
- Oracle建立表空间、建立用户、用户授权、指定表空间、激活用户、删除用户、删除表空间
- Oracle主键、唯一键与唯一索引的区别
- Oracle环境下的Hibernate方言配置
- 利用ORACLE实现数据抽样(sample block)
- oracle数据库实例启动与关闭
- oracle 表空间不足处理
- Kettle 5.4 SQL2Oracle简单实例
- Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)
- window、linux安装jdk,excel 导入oracle,WebService,window 端口查看,svn服务安装,oracle用户解锁
- Oracle临时表 和 插入多条语句 用法
- oracle海量数据中提升创建索引的速度
- Oracle或者PostgreSQL的row_number over 排名语法
- maven添加oracle jdbc依赖
- Oracle数据库批量插入使用Sequence.nextval报错ORA:02287问题解决
- Oracle 如何查询被锁定表及如何解锁释放session
- Oracle 实例几个function
- Oracle 把秒转成时分秒格式(hh24:mm:ss);检测字符串是否是数字;字符串转换为数字
- 一个非常标准的Java连接Oracle数据库的示例代码
- Oracle数据库SQL语句大全
- oracle数据导入导出表等系列操作总结