登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

li.angshan 的博客

关注数据计算领域

 
 
 

日志

 
 
 
 

数据库字符集参考  

2009-11-04 16:51:56|  分类: oracle 字符集 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

数据库字符集和国家字符集

在创建数据库的sql中有character setnational character set指定.

数据库字符集用来存放charvarchar2cloblong等类型数据,sqlpl/sql程序单元等

国家字符集用来存放ncharnvarchar2nclobnlong等类新数据.

 

oracle字符集命名规则

<language><比特位数><字符编码>

zhs16gbk表示语言为中文,采用双字节16位编码,gbk编码。

  us7ascill表示语言为英语,采用单字节7位编码,ascill编码。

 

如何取得客户端操作系统的当前字符集

window操作系统,用chcp,如结果为936,则代表为zhs16gbk,具体可以去微软网站查询。

Unix 操作系统,用echo $NLS_LANG      或者env|grep NLS_LANG

 

如何查看客户端的字符集设置

客户端字符集通过nls_lang来设置,nls_lang的格式

<languguage>_<territory>.<字符集>

nls_lang=American_America.us7ascii

window操作系统,用echo %NLS_LANG%

Unix 操作系统,用echo $NLS_LANG      或者env|grep NLS_LANG

 

如何查看数据库字符集

dba用户可以查数据字典propsnls_database_parameters

SQL> select name,value$ from props$;

NLS_CHARACTERSET            ZHS16CGB231280

 

select * from nls_database_parameters;

NLS_CHARACTERSET            ZHS16CGB231280

 

普通用户可以用userenv这个函数去查看当前数据库的字符集

SQL> SELECTUSERENV('LANGUAGE')FROM DUAL;

USERENV('LANGUAGE')

--------------------------------------------

AMERICAN_AMERICA.ZHS16CGB231280

 

 

Exp/imp导入导出涉及的字符集问题

 

1:Exp的时候,设置客户端的字符集和导出数据库的字符集一致,这样,导出文件将和导出数据库具有相同的字符集,避免了导出数据库与导出文件之间的字符集转换

 

2:导入的时候,设置客户端的字符集为导出文件的字符集,这样避免了导出文件与导入客户端字符集的转换,如果此时导入客户端字符集不等于数据库字符集,那么在数据库会负责导入客户端字符集到数据库字符集的转换。

 

3:导出的时候,导出客户端的字符集存放在导出文件的第二,三个字节(16进制),下面的二个函数可以帮助我们识别字符集编码和数值之间的关系。

  SQL> select nls_charset_name(852) from dual;

 

NLS_CHARSET_NAME

----------------

ZHS16GBK

SQL> select nls_charset_ID('ZHS16CGB231280') FROM DUAL;

 

NLS_CHARSET_ID('ZHS16CGB231280')

--------------------------------

850

 

 

关于字符集的修改

一:alter database character set zhs16cgb231280

可以用在子集到超级的修改

二:alter database character set internal_use zhs16cgb231280

该语句不受子集和超集的限制,强制性转换

(修改前,切记要备份

 

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE例程已经关闭。

SQL> startup mount

ORACLE例程已经启动。

Total System Global Area 135338868 bytes

Fixed Size                  453492 bytes

Variable Size            109051904 bytes

Database Buffers          25165824 bytes

Redo Buffers                667648 bytes

数据库装载完毕。

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 internal_use zhs16cgb231280;

数据库已更改。

  评论这张
 
阅读(187)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018