根据ORACLE官方文档的说明,一旦数据库创建后,数据库的字符集是不能改变的。因此,提前考虑自己的数据库将选用哪一种字符集
是十分重要的。数据库字符集选择的一般规则是将数据库字符集设定为操作系统本地字符集的一个超集,同时数据库字符集也应该是
所有客户字符集的超集。如同样是中文环境,在选择ZHS16CGB231280还是ZHS16GBK时,我们更多的情况是选择ZHS16GBK,因为它包含
了ZHS16CGB231280字符集。
一.确认服务器与客户端oracle采用同一种字符集
可通过以下步骤来检查:
1.检查服务器上的字符集类型
方法:
连接至服务器上的数据库,在PL/SQL中运行以下语句.
select userenv('LANGUAGE'),userenv('LANG') from dual;
2.检查Oracle客户端采用的是那一种字符集
方法:
通过查看 注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEO\nls_lang 的键值.
3.确保服务器字符集与客户端oracle字符集一致
因为服务器上的oracle数据库字符集是不能更改的(客户已经在使用,改动将影响客户其他软件的使用,因此不要去改客户
ORACLE数据库的字符集.)
因此采用以下两种方法:
a. 重装oracle客户端,注意在安装过程中,选择字符集类型时,选择与oracle数据库一致的字符集。
b. 更改oracle客户端注册表,将HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEO\nls_lang 的键值改成与服务器上的字符集一致。
二.从oracle9i/92数据库中导出数据至 oracle 8.1.7 数据库中
方法:
在只安装 oracle 8.1.7 客户端 机器上通过 exp 命令导出 oracle9i/92数据库内的数据。
再通过 该机器将前面导出的数据 通过 imp 命令 导入至oracle 8.1.7 数据库中。
注意:
Oracle 9i/92数据库的字符集应与oracle8.1.7 数据库字符集一致。
如果不一致,则重装oracle92数据库,用脚本建表和导入oracle92数据。可借助PLSQL Developer软件。