Imp中出现Ora-12899错误的解决方法:
操作方法:
从磁盘中导入备份的数据文件到oracle数据库中,使用如下window导入命令:
C: IMP CWA6/CWA6 file=D:beifen.dmp fromuser=CWA6 touser=CWA6
Ora-12899:value too large for column
问题分析:
备份的数据文件的源数据库使用的字符集类型是ZHS16BGK,
而目标数据库(本机数据库)使用的字符集类型是UTF-8,
汉字字符在前者存放时需要占用2个字节,在后者存放时需要占用3个字节。
在IMP的过程中,原先备份数据表的数据字段复制到目标数据库中存放,但数据存储过程中,由于目标数据库中字符集与源数据库字符不同,导致存放进目标数据库中的数据比存放在源数据库中所需要的空间要大,故源数据表的字段无法满足现有的数据大小,所以才会出现(“xx.xx.xx字段“(实际值:3,最大值:2))的情况。
解决方法:
更改数据库的字符集类型。
在sqlplus中更改的具体操作步骤如下:
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 146803588 bytes
Database Buffers 457179136 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
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 internal_use ZHS16GBK;
数据库已更改。
SQL> shutdown immedate;
SP2-0717: 非法的 SHUTDOWN 选项
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 146803588 bytes
Database Buffers 457179136 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
测试:
在CMD命令窗口执行IMP命令:
C: IMP CWA6/CWA6 file=D:beifen.dmp fromuser=CWA6 touser=CWA6
系统将不会再出现ora-12899的错误。
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24829399/viewspace-1055912/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24829399/viewspace-1055912/