ORACLE数据库字符集

概念:
   
实质就是按照一定的字符编码方案,对一组特定的符号,分别赋予不同数值编码的集合。Oracle数据库最早支持的编码方案是US7ASCII。 
    Oracle 的字符集命名遵循以下命名规则 :
    即:  <语言><比特位数><编码 >
    比如: ZHS16GBK表示采用GBK编码格式、16位(两个字节)简体中文字符集
知识点:

1》数据库字符集(oracle服务器端字符集) 
     数据库字符集在创建数据库时指定,在创建后通常不能更改。在创建数据库时,可以指定字符集(CHARACTER SET)和国家字符集(NATIONAL CHARACTER SET)
2》查询字符集参数 
    可以利用以下数据字典或视图查看字符集设置情况 
    nls_database_parameters 、props$、 v$nls_parameters
    查询结果中NLS_CHARACTERSET表示字符集,NLS_NCHAR_CHARACTERSET表示国家字符集 
3》 修改数据库字符集 
    (1)数据库字符集在创建后原则上不能更改。
   (2)如果需要修改字符集,通常需要导出数据库数据,重建数据库,再导入数据库数据的方式来转换。
   (3)或通过ALTER DATABASE CHARACTER SET语句修改字符集,但创建数据库后修改字符集是有限制的,只有新的字符集是当前字符集的超集时才能修改数据库字符集,
   (4)例如UTF8是US7ASCII的超集,修改数据库字符集可使用ALTER DATABASE CHARACTER SET UTF8。
4》 客户端字符集(NLS_LANG参数) 
 (1) 客户端字符集含义 
    客户端字符集定义了客户端字符数据的编码方式,任何发自或发往客户端的字符数据均使用客户端定义的字符集编码,客户端可以看作是能与数据库直接连接的各种应用,例如sqlplus,exp/imp等。客户端字符集是通过设置NLS_LANG参数来设定的。 
 (2) NLS_LANG 参数格式 
    NLS_LANG=Language_Territory.Client character set
    Language: 显示oracle消息,校验,日期命名 
    Territory :指定默认日期、数字、货币等格式 
    Client character set :指定客户端将使用的字符集 
    例如: NLS_LANG=AMERICAN_AMERICA.US7ASCII  
    AMERICAN是语言,AMERICA是地区,US7ASCII是客户端字符集 
 (3) 客户端字符集设置方法 
     1)UNIX 环境 
         $>NLS_LANG=“simplified chinese”_china.zhs16gbk
         $>export NLS_LANG
         编辑oracle用户的profile文件 
    2)Windows 环境 
         编辑注册表 
         Regedit.exe---HKEY_LOCAL_MACHINE---SOFTWARE---ORACLE—HOME0
 (4) NLS 参数查询 
    Oracle 提供若干NLS参数定制数据库和用户机以适应本地格式,例如有NLS_LANGUAGE,NLS_DATE_FORMAT,NLS_CALENDER等,可以通过查询以下数据字典或v$视图查看。 
    NLS_DATABASE_PARAMETERS-- 显示数据库当前NLS参数取值,包括数据库字符集取值 
    NLS_SESSION_PARAMETERS-- 显示由NLS_LANG 设置的参数,或经过alter session 改变后的参数值(不包括由NLS_LANG 设置的客户端字符集) 
    NLS_INSTANCE_PARAMETE-- 显示由参数文件init.ora 定义的参数V$NLS_PARAMETERS--显示数据库当前NLS参数取值 
 (5) 修改NLS参数 
    使用下列方法可以修改NLS参数 
    (1)修改实例启动时使用的初始化参数文件 
    (2)修改环境变量 NLS_LANG
    (3)使用ALTER SESSION语句,在oracle会话中修改 
    (4)使用某些SQL函数 
    NLS 作用优先级别:Sql function>alter session>环境变量或注册表>参数文件>数据库默认参数


请使用浏览器的分享功能分享到微信等