为什么要修改字符集?
使用用户system,通过sqlplus程序连接到Oracle数据库,输入以下命令,查看字符集:
SQL> select userenv(‘language‘) from dual; USERENV(‘LANGUAGE‘) ---------------------------------------------------- AMERICAN_AMERICA.AL32UTF8 SQL>
我们可以看到查到的字符集为“AMERICAN_AMERICA.AL32UTF8”,而国内数据库常用的字符集为“ZHS16GBK”。
例如:某字段在企业版中定义的为varchar2(4),保存数据为‘‘田田‘‘,则导入oraclexe时,该字段定义仍为varchar2(4),但数据‘‘田田‘‘就需要占用6个字符长度,出现的问题如下所示:
IMP-00019: 由于 ORACLE 错误 12899 而拒绝行
IMP-00003: 遇到 ORACLE 错误 12899
ORA-12899: 列 "TEST"."TEST_TIANYC"."A" 的值太大 (实际值: 6, 最大值: 4)
此时就需要按照以下操作说明进行操作后即可解决问题。
操作说明:
开始菜单-->所有程序-->Oracle Database 11g Express Edition-->运行SQL命令行,启动sqlplus程序。
由于sqlplus程序不支持直接在程序窗口中右键,进行复制、粘贴等操作,所以博主采用的是在运行命令行中启动sqlplus程序。
开始菜单-->运行-->输入cmd,并回车-->打开cmd命令行。
Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。 C:\Users\Candy>C:\oraclexe\app\oracle\product\11.2.0\server\bin\sqlplus.exe /nolog SQL*Plus: Release 11.2.0.2.0 Production on 星期三 11月 26 12:11:59 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. SQL> connect system as sysdba 输入口令: 已连接。 SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount ORACLE 例程已经启动。 Total System Global Area 644468736 bytes Fixed Size 1385488 bytes Variable Size 192941040 bytes Database Buffers 444596224 bytes Redo Buffers 5545984 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 immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup ORACLE 例程已经启动。 Total System Global Area 644468736 bytes Fixed Size 1385488 bytes Variable Size 192941040 bytes Database Buffers 444596224 bytes Redo Buffers 5545984 bytes 数据库装载完毕。 数据库已经打开。 SQL> select userenv(‘language‘) from dual; USERENV(‘LANGUAGE‘) ---------------------------------------------------- SIMPLIFIED CHINESE_CHINA.ZHS16GBK SQL>
此时,再进行数据导入或者在字段类型为varchar2(4)的字段插入“田田”,就不会报错了。
修改字符集后可能导致navicat连不上Oracle数据库,请在菜单-->工具-->选项-->其他-->OCI中将OCI library(oci.dll)的值修改为
C:\oraclexe\app\oracle\product\11.2.0\server\bin\oci.dll,点击确定后,重启navicat即可。
时间: 2024-09-27 18:42:14