Oracle11g 字符集查询与修改

来源:互联网 发布:苹果ipowerl软件 编辑:程序博客网 时间:2024/05/29 07:33


环境:服务端:redhat6.3oracle11g

     客户端:windos XP plsql

 

1      客户端的字符集查询方式

在装有oracle客户端的机器上,打开注册表:regedit

注册表中搜索:NLS_LANG

或者通过路径查找NLS_LANGHKEY_LOCAL_MACHINE ---SOFTWARE --- ORACLE

结果页面如下:

值为:CHINESE_CHINA.ZHS16GBK

 

影响Oracle数据库字符集最重要的参数是NLS_LANG参数。

它的格式如下: NLS_LANG =language_territory.charset

它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。

其中:

Language指定服务器消息的语言,影响提示信息是中文还是英文

Territory指定服务器的日期和数字格式,

Charset指定字符集。

如:AMERICAN _ AMERICA. ZHS16GBK

NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。

所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文

 

2      服务端的字符集查询方式:

Plsql中运行如下sql

 

selectuserenv('language')from dual;

 

查询结果如下:

3      客户端字符集修改方式

编辑注册表中的NLS_LANG值(要注意必须是ORACLE-HOME目录下的)

Regedit.exe --- HKEY_LOCAL_MACHINE ---SOFTWARE --- ORACLE-HOME

 

或者在Dos窗口下运行:

set nls_lang=AMERICAN_AMERICA.ZHS16GBK


有时是oracle免安装客户端,没有oracle-home、注册表中也查询不到nls_lang,可以用如下方法:

可以新增环境变量:

变量名:NLS_LANG

变量值:SIMPLIFIED CHINESE_CHINA.AL32UTF8

值为想要变成的字符集。


4 服务端字符集的修改

  修改时,修改后的字符集须是修改前的超集,如AL32UTF8是ZHS16GBK的超集,则可以修改。

  要用oracle自带的plsql去执行命令,用户为sys,执行如下命令:

SQL> ALTER DATABASE character set INTERNAL_USE AL32UTF8;




0 0