Oracle的字符集:nls_database_parameters、nls_instance_parameters、nls_session_parameters
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相关推荐
- oracle数据库字符集AL32UTF8修改为ZHS16GBK即从超集到子集
转自:https://www.cnblogs.com/perilla/p/3873653.html 一.什么是Oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的 ...
- ORACLE数据库字符集
ORACLE数据库字符集 一.字符集基本知识 二.查询oracle server端的字符集 三.修改oracle的字符集 字符集基本知识 1.基本认知 ORACLE数据库字符集,即Oracle全球化支 ...
- oracle怎么设置字符集,ORACLE系统字符集设置
like '8011'||lpad(#value#,8,'0')//lpad 函数将8位的值为0的数据替换为value但是其位数不变. 修改Oracle客户端字符集方法: 1:可以通过修改注册表键值永 ...
- linux 查看oracle数据库字符集,Oracle字符集的查看查询和Oracle字符集的设置修改
三. 修改Oracle的字符集 8i以上版本可以通过alter database来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误. Startup nomount; A ...
- 理解ORACLE数据库字符集
一.引言 ORACLE数据库字符集,即Oracle全球化支持(Globalization Support),或即国家语言支持(NLS)其作用是用本国语言和格式来存储.处理和检索数据.利用全球化 ...
- oracle数据库字符集characterset迁移及变更之csscan及csalter.plb系列三
背景 本文主要熟悉下如何用csscan以及csalter脚本变更数据库字符集,进一步理解如何调整数据库字符集的知识. 之前的相关文章链接: oracle10g_csscan_更变数据库字符集及国家字符 ...
- [Oracle数据库] oracle数据库字符集characterset迁移及变更之csscan及csalter.plb系列三
背景 本文主要熟悉下如何用csscan以及csalter脚本变更数据库字符集,进一步理解如何调整数据库字符集的知识. 之前的相关文章链接: oracle10g_csscan_更变数据库字符集及国家字符 ...
- oracle数据库字符集characterset迁移及变更之csscan及csalter.plb系列四
背景 数据库字符集涉及的概念与知识非常多,本文继续学习:相关文章链接见下: oracle数据库字符集characterset迁移及变更之csscan及csalter.plb系列三 http:// ...
- 关于Oracle数据库字符集的选择及乱码情况
关于Oracle数据库字符集的选择及乱码情况 背景: 在项目上,开发人员在安装Oracle数据库时采用的默认的编码集,导致后期正式运行时出现某些生僻字和中文符号. 出现乱码.出现的情况就是某些生僻字或 ...
最新文章
- 关于算法中的并查集,写的很有意思,转过来看看~
- 【好文推荐】查看mysql安装位置
- codeforces1437 E. Make It Increasing——最长上升子序列
- dll文件的c++制作dll文件的c++制作
- 【HDU - 1455】Sticks (dfs + 剪枝)
- 医药电商、线上药房、连锁药店、用药咨询、药箱补货、药师认证、分销商、合伙人、医生管理、诊所管理、处方药、收银、发票、电子会员卡、门店调拨、提成分销、问诊咨询、积分、顾客、流程图、业务逻辑、营销、优惠
- 在Vue项目中使用Echarts的一种方式
- POJ 1330 最近公共祖先LCA(Tarjan离线做法)
- OpenCV人工智能图像处理学习笔记 第6章 计算机视觉加强之机器学习下 Hog_SVM小狮子识别
- 为什么培训出来的学员总喜欢包装成三年工作经验?
- 软件系统演示脚本实践(草稿)
- JAVA使用465端口与25端口实现发送邮件的业务,以及执行时常见的错误解决方法
- Nginx正反向代理的具体步骤讲解
- 2019第十二届全国大学生信息安全竞赛部分WriteUp
- 一战封神快速升级攻略
- C++成员变量指针和成员函数指针
- linux两个光驱,llinux挂载多个光驱
- python 关键字field
- 教师计算机应用基础知识,计算机应用基础
- RK3188从SDCARD中运行Android系统
热门文章
- 陶瓷级羧甲基纤维素钠(CMC)-市场现状及未来发展趋势
- CS231n学习记录Lec8 Training训练神经网络(下)
- SpringBoot 启动时的运行方法
- Redis过期key是怎么样清理的?
- 第5章 加密与认证技术
- 解决java.lang.ClassNotFoundException: org.apache.axis2
- 使用Lim测试平台快速完成批量造数
- linux怎么取消root加固,禁止Root从SSH直接访问加固Linux
- PHP的PSR推荐规范,PSR-1,PSR-2,PSR-3,PSR-4详解
- 写给小白看的线程池,还有10道面试题