您的位置:首页 > 博客中心 > 数据库 >

Oracle Database 11g Express Edition修改字符集

时间:2022-03-14 03:01

为什么要修改字符集?

使用用户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即可。

热门排行

今日推荐

热门手游