一个同事使用Windows操作系统中文环境安装完10g以后,因为工作需要需要使用日文的操作系统。相应的数据库也应该是日文。这时候数据库中默认的为中文的字符集,因为安装数据库的时候默认的字符集是根据系统而来的。改过操作系统的语言设置以后,Oracle10g内部出现乱码。
一般情况下这种的最好该一下注册表的字符集(1)。 然后重建一个日文字符集的数据库就可以解决问题。
假如是空数据库,那么可以通过(1,2)来实现。而不用重新创建数据库
解决办法
1. 修改注册表的字符集信息
在注册表的HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE里有三个需要修改
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME
修改其下的NLS_LANG参数为JAPANESE_JAPAN.JA16SJIS
重新启动库,整个库就变成日文的了。
update sys.props$ set value$='JA16SJIS' WHERE name = 'NLS_CHARACTERSET'
FROM V$NLS_VALID_VALUES
WHERE PARAMETER = 'CHARACTERSET'
ORDER BY NLS_CHARSET_ID(VALUE)
865 ZHT16BIG5
832 JA16SJIS
然后更新 列等
SET VALUE$ = 'JA16SJIS'
WHERE NAME = 'NLS_CHARACTERSET'
SELECT CHARSETID FROM SYS.COL$
WHERE CHARSETFORM=1
SET CHARSETID=832
WHERE CHARSETFORM=1
SET CHARSETID=832
WHERE CHARSETFORM=1
SET CHARSETID=832
WHERE CHARSETFORM=1
SET CHARSETID=832
WHERE CHARSETFORM=1
SET CHARSETID=832
WHERE CHARSETFORM=1