首页 > 代码库 > Oracle Database 11g Express Edition修改字符集

Oracle Database 11g Express Edition修改字符集

为什么要修改字符集?

使用用户system,通过sqlplus程序连接到Oracle数据库,输入以下命令,查看字符集:

SQL> select userenv(‘language‘) from dual;USERENV(‘LANGUAGE‘)----------------------------------------------------AMERICAN_AMERICA.AL32UTF8SQL>

我们可以看到查到的字符集为“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 /nologSQL*Plus: Release 11.2.0.2.0 Production on 星期三 11月 26 12:11:59 2014Copyright (c) 1982, 2010, Oracle.  All rights reserved.SQL> connect system as sysdba输入口令:已连接。SQL> shutdown immediate数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL> startup mountORACLE 例程已经启动。Total System Global Area  644468736 bytesFixed Size                  1385488 bytesVariable Size             192941040 bytesDatabase Buffers          444596224 bytesRedo 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> startupORACLE 例程已经启动。Total System Global Area  644468736 bytesFixed Size                  1385488 bytesVariable Size             192941040 bytesDatabase Buffers          444596224 bytesRedo Buffers                5545984 bytes数据库装载完毕。数据库已经打开。SQL> select userenv(‘language‘) from dual;USERENV(‘LANGUAGE‘)----------------------------------------------------SIMPLIFIED CHINESE_CHINA.ZHS16GBKSQL>

此时,再进行数据导入或者在字段类型为varchar2(4)的字段插入“田田”,就不会报错了。

修改字符集后可能导致navicat连不上Oracle数据库,请在菜单-->工具-->选项-->其他-->OCI中将OCI library(oci.dll)的值修改为

C:\oraclexe\app\oracle\product\11.2.0\server\bin\oci.dll,点击确定后,重启navicat即可。

Oracle Database 11g Express Edition修改字符集