oracle导入dmp时提示:遇到oracle错误12899

当使用Oracle11g导入DMP备份文件时遇到某些表因列值过大或字符集问题无法导入,文章指出问题在于AL32UTF8字符集的一个汉字占3个字节,导致超过列名30字节的限制。解决方案是将数据库字符集更改为ZHS16GBK,减少每个汉字占用的空间,从而解决导入问题。步骤包括连接数据库,关闭并重新启动服务,更改字符集设置。
摘要由CSDN通过智能技术生成

在使用Oracle 11g在导入备份文件dmp时,总有几个表没有导入成功,提示:

由于Oracle错误而拒绝行,列xx.xx的值太大(实际值:8,最大值:6)


解决办法:

  1. cmd,打开dos;
  2. 打开sqlPlus,提示输入用户名/密码  as  sysdba    登录;
  3. 查看字符集编码:select userenv('language') from dual;(注意有分号) 

查询出的结果:

      SIMPLIFIED CHINESE_CHINA.AL32UTF8;

      查询字符集结果如果是AL32UTF8

      需要更改字符集为ZHS16GBK

这是因为:

AL32UTF8:一个汉字占三个字节

ZHS16GBK:一个汉字占两个字节

标识符过长:表名、列名最长只能30个字节。很明显是因为编码问题,导致备份dmp中有的中文字符过长,无法插入。

只需要更改编码即可:

C:\Users\Administrator>> 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 INTERNAL_USE ZHS16GBK;
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;

SQL>shutdown immediate;

SQL>startup;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值