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