您的位置:首页 > 数据库 > Oracle

oracle db 字符集问题

2013-03-08 15:32 204 查看
1。查看字符集的方法

  select userenv('language') from dual;

or

select * from v$nls_parameters;

2. 更改客户端字符集

 设置nls_lang

window下,(可以设进注册表中)

   set nls_lang=AMERICAN_AMERICA.UTF8

  linux下,(可以设进.bash_profile)

   export nls_lang=american_america.utf8

3. nls_lang三部分的含义,如

 american --- 代表oracle消息返回采用的字符集

 america ---- 代表用户采用的区域,比如日期/钱币显示格式会受影响

 utf8 ---  代表数据库的数据实际采用的字符集

4. 常用字符集有哪些

  set nls_lang="SIMPLIFIED CHINESE_CHINA".AL32UTF8 ---中文 中国区  Unicode字符集

  american_america.utf8 ---英文消息  美国区 Unicode字符集

  american_america.zhs16gbk ---英文消息  美国区 简体中文字符集

  TRADITIONAL CHINESE_TAIWAN.AL32UTF8

5. 创建数据库实例时,如何指定为 american_america.utf8

  其中一步选择“自定义”,然后“显示全部”,指定utf8-开头的字符集

6. 更改server端字符集

AL32UTF8改为ZHS16GBK

SQL> conn /as sysdba

SQL> shutdown immediate;

SQL> startup mount

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 ZHS16GBK;

ORA-12712: new character set must be a superset of old character set

提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:

SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

--我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验.

SQL> shutdown immediate;

SQL> startup

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: