1、字符集命名
Oracle的字符集命名遵循以下命名规则:
<Language><bit size><encoding>
即: <语言><比特位数><编码>
比如: ZHS16GBK表示采用GBK编码格式、16位(两个字节)简体中文字符集
例如:AL32UTF8(其中AL代表ALL,指适用于所有语言)

NLS_LANG=CHINESE_CHINA.ZHS16GBK 
CHINESE是语言,CHINA是地区,ZHS16GBK 是客户端字符集

NLS_CHARACTERSET是数据库字符集,
NLS_NCHAR_CHARACTERSET是国家字符集
ORACLE中有两大类字符型数据:
VARCHAR2是按照数据库字符集来存储数据;
NVARCHAR2是按照国家字符集存储数据的;
同样,CHAR和NCHAR也一样,一是数据库字符符,一是国家字符集。
字符集不同,二进制码的组合就不同。

2、三种字符集说明
(1).oracle服务器端字符集:
数据库字符集在创建数据库时指定,在创建后通常不能更改
服务器端字符集的命令是: select * from nls_database_parameters
nls_database_parameters取值与props$,
即我们创建数据库时存储在数据库中的熟悉信息,这与环境变量和参数文件等是统统没有关系的。
 
(2).oracle客户端字符集:
客户端的字符集的设置,可能是参数文件,环境变量或者是注册表
客户端字符集的命令是: select * from nls_instance_parameters 
nls_instance_parameters取值与v$parameter
nls_instance_parameters的值由参数文件决定,那么会不会受到环境变量的影响呢?经验证,是不会的!

(3).oracle会话字符集:
会话字符集是继承客户端字符集,如果设置环境变量可以覆盖会话字符集
会话字符集的命令是: select * from nls_session_parameters
nls_session_parameters 来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,
如果会话没有特殊的设置,将与nls_instance_parameters一致。

总结:
客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。
如果多个设置存在的时候,NLS作用优先级别:Sql function > alter session > 环境变量或注册表 > 参数文件 > 数据库默认参数
字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。

3、修改字符集方法
3.1 修改server端字符集(不建议使用)

1. 关闭数据库
    SQL>SHUTDOWN IMMEDIATE
  
  2. 启动到Mount
    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; 
    SQL>ALTER DATABASE NATIONAL CHARACTER SET AL16UTF16; 
    --如果是从子集到父集,需要使用INTERNAL_USE 参数,跳过超子集检测
    SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8; 
    SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;
    
    SQL>SHUTDOWN IMMEDIATE; 
    SQL>STARTUP

3.2客户端字符集设置方法
 1)UNIX环境
   $NLS_LANG=“simplified chinese”_china.zhs16gbk
   $export NLS_LANG
   编辑oracle用户的profile文件
 2)Windows环境
   编辑注册表
   Regedit.exe ---》 HKEY_LOCAL_MACHINE ---》SOFTWARE ---》 ORACLE--》HOME
   或者在窗口设置:
   set nls_lang=AMERICAN_AMERICA.ZHS16GBK

Oracle的字符集:nls_database_parameters、nls_instance_parameters、nls_session_parameters相关推荐

  1. oracle数据库字符集AL32UTF8修改为ZHS16GBK即从超集到子集

    转自:https://www.cnblogs.com/perilla/p/3873653.html 一.什么是Oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的 ...

  2. ORACLE数据库字符集

    ORACLE数据库字符集 一.字符集基本知识 二.查询oracle server端的字符集 三.修改oracle的字符集 字符集基本知识 1.基本认知 ORACLE数据库字符集,即Oracle全球化支 ...

  3. oracle怎么设置字符集,ORACLE系统字符集设置

    like '8011'||lpad(#value#,8,'0')//lpad 函数将8位的值为0的数据替换为value但是其位数不变. 修改Oracle客户端字符集方法: 1:可以通过修改注册表键值永 ...

  4. linux 查看oracle数据库字符集,Oracle字符集的查看查询和Oracle字符集的设置修改

    三. 修改Oracle的字符集 8i以上版本可以通过alter database来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误. Startup nomount; A ...

  5. 理解ORACLE数据库字符集

    一.引言     ORACLE数据库字符集,即Oracle全球化支持(Globalization Support),或即国家语言支持(NLS)其作用是用本国语言和格式来存储.处理和检索数据.利用全球化 ...

  6. oracle数据库字符集characterset迁移及变更之csscan及csalter.plb系列三

    背景 本文主要熟悉下如何用csscan以及csalter脚本变更数据库字符集,进一步理解如何调整数据库字符集的知识. 之前的相关文章链接: oracle10g_csscan_更变数据库字符集及国家字符 ...

  7. [Oracle数据库] oracle数据库字符集characterset迁移及变更之csscan及csalter.plb系列三

    背景 本文主要熟悉下如何用csscan以及csalter脚本变更数据库字符集,进一步理解如何调整数据库字符集的知识. 之前的相关文章链接: oracle10g_csscan_更变数据库字符集及国家字符 ...

  8. oracle数据库字符集characterset迁移及变更之csscan及csalter.plb系列四

    背景 数据库字符集涉及的概念与知识非常多,本文继续学习:相关文章链接见下: oracle数据库字符集characterset迁移及变更之csscan及csalter.plb系列三    http:// ...

  9. 关于Oracle数据库字符集的选择及乱码情况

    关于Oracle数据库字符集的选择及乱码情况 背景: 在项目上,开发人员在安装Oracle数据库时采用的默认的编码集,导致后期正式运行时出现某些生僻字和中文符号. 出现乱码.出现的情况就是某些生僻字或 ...

最新文章

  1. 关于算法中的并查集,写的很有意思,转过来看看~
  2. 【好文推荐】查看mysql安装位置
  3. codeforces1437 E. Make It Increasing——最长上升子序列
  4. dll文件的c++制作dll文件的c++制作
  5. 【HDU - 1455】Sticks (dfs + 剪枝)
  6. 医药电商、线上药房、连锁药店、用药咨询、药箱补货、药师认证、分销商、合伙人、医生管理、诊所管理、处方药、收银、发票、电子会员卡、门店调拨、提成分销、问诊咨询、积分、顾客、流程图、业务逻辑、营销、优惠
  7. 在Vue项目中使用Echarts的一种方式
  8. POJ 1330 最近公共祖先LCA(Tarjan离线做法)
  9. OpenCV人工智能图像处理学习笔记 第6章 计算机视觉加强之机器学习下 Hog_SVM小狮子识别
  10. 为什么培训出来的学员总喜欢包装成三年工作经验?
  11. 软件系统演示脚本实践(草稿)
  12. JAVA使用465端口与25端口实现发送邮件的业务,以及执行时常见的错误解决方法
  13. Nginx正反向代理的具体步骤讲解
  14. 2019第十二届全国大学生信息安全竞赛部分WriteUp
  15. 一战封神快速升级攻略
  16. C++成员变量指针和成员函数指针
  17. linux两个光驱,llinux挂载多个光驱
  18. python 关键字field
  19. 教师计算机应用基础知识,计算机应用基础
  20. RK3188从SDCARD中运行Android系统

热门文章

  1. 陶瓷级羧甲基纤维素钠(CMC)-市场现状及未来发展趋势
  2. CS231n学习记录Lec8 Training训练神经网络(下)
  3. SpringBoot 启动时的运行方法
  4. Redis过期key是怎么样清理的?
  5. 第5章 加密与认证技术
  6. 解决java.lang.ClassNotFoundException: org.apache.axis2
  7. 使用Lim测试平台快速完成批量造数
  8. linux怎么取消root加固,禁止Root从SSH直接访问加固Linux
  9. PHP的PSR推荐规范,PSR-1,PSR-2,PSR-3,PSR-4详解
  10. 写给小白看的线程池,还有10道面试题