windows下装的oracle,如何将字符集al32utf8改为zhs16gbk

版本:oracle10g
环境:windowXP

问题起源:oracle默认字符集为AL32UTF8,所有中文都被认为是3个字节一个汉字。
解决方案:将AL32UTF8改为ZHS16GBK。

遇到的问题:
我按照网上的解决方法依次执行以下语句:
SQL> conn sys/sys as sysdba;
SQL> shutdown immediate;
SQL> STARTUP MOUNT;
SQL> ALTER SESSION SET SQL_TRACE=TRUE;
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 ZHS16GBK;

SQL> Shutdown immediate;
SQL> startup;

但是在执行到改字符集的时候出现错误:
ALTER DATABASE CHARACTER SET ZHS16GBK
*
第 1 行出现错误:
ORA-12712: 新字符集必须为旧字符集的超集

在这种情况下如何修改字符集为ZHS16GBK?
(别告诉我重装ORACLE,代价很大的!)

什么版本没说,是8i?如果是按下面操作

有一个配置文件名为dbappscfg.properties,修改该文件即可解决上述问题。这个文件的位置在$ORACLE_HOME\sysman\config目录下,用任何的文本编辑器打开该文件,在这个文件里面,找到这样一项,

# SQLPLUS_NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1

去掉注释符#,同时将其修改为

SQLPLUS_NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

对于Windows操作系统,还需要修改一项,在文件中找到# SQLPLUS_SYSTEMROOT=c:\\WINNT40,去掉注释符,将其修改为你所在机器的操作系统主目录。如操作系统的主目录在D盘的Winnt下,则将其修改为

SQLPLUS_SYSTEMROOT=d:\\WINNT

9i可直接修改如下:

sqlplus直接进去,输入命令:
select value$ from props$ where name=' NLS_CHARACTERSET';
显示不是ZHS16GBK,就更改,默认的是:WE8ISO8859p1
更改命令:
update props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET';
重启生效

楼主玩我,给了8i和9i后才告诉是10G

10g修改如下:

NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

set nls_lang = AMERICAN_AMERICA.ZHS16GBK
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-11-07
这么着修改:

有一个配置文件名为dbappscfg.properties,修改该文件即可解决上述问题。这个文件的位置在$ORACLE_HOME\sysman\config目录下,用任何的文本编辑器打开该文件,在这个文件里面,找到这样一项

NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

set nls_lang = AMERICAN_AMERICA.ZHS16GBK本回答被提问者采纳
第2个回答  2015-09-17
建议重新安装,安装的过程中有设置字符集的页面。你现在变更,在数据库中是没办法变更过来的。
第3个回答  2008-11-08
不会啊