简介:ORACLE数据库字符集,即Oracle全球化支持(Globalization Support),或即国家语言支持(NLS)其作用是用本国语言和格式来存储、处理和检索数据。利用全球化支持,ORACLE为用户提供自己熟悉的数据库母语环境,诸如日期格式、数字格式和存储序列等。Oracle可以支持多种语言及字符集,其中oracle8i支持48种语言、76个国家地域、229种字符集,而oracle9i则支持57种语言、88个国家地域、235种字符集。由于oracle字符集种类多,且在存储、检索、迁移oracle数据时多个环节与字符集的设置密切相关,因此在实际的应用中,数据库开发和管理人员经常会遇到有关oracle字符集方面的问题。

字符集,实质就是按照一定的字符编码方案,对一组特定的符号,分别赋予不同数值编码的集合。Oracle数据库最早支持的编码方案是US7ASCII。Oracle的字符集命名遵循以下命名规则:<Language><bitsize><encoding> 即: <语言><比特位数><编码> 。比如: AL32UTF8表示:AL,代表all,指使用所有语言;32,,32位;UTF8编码。查看环境变量发现:NLS_LANG=American_America.AL32UTF8,American表示语言;America表示地区;AL32UTF8字符集类型。

AL32UTF8和UTF8有什么区别呢?Oracle的UTF8字符集由来已久,至少在8的时候就已经存在了,而对应的是UNICODE 3.0。而AL32UTF8字符集是9i才出现的,其对应的是UNICODE 5.0。这两种字符集的区别在于,UNICODE 5.0与3.0相比,又增加了一些新的补充字符。但是在实际当中,使用到这些新增字符的可能性非常小,因此绝大部分情况下,选择UTF8也是足够的。AL32UTF8字符集是9i才出现的,那么对于9i以后的版本访问没有任何问题,但是对于8i及以前的版本,则不认识这个字符集。这就使得8i及更低版本的客户端在访问9i以上AL32UTF8的数据库时,会碰到各种各样的问题。因此,如果数据库版本都在9i及其以上,不需要考虑ORACLE8的数据库,建议使用AL32UTF8字符集,它采用的Unicode标准要比UTF8采用的Unicode标准更新,支持的字符也更多一些。如果要考虑ORACLE8数据库,建议使用UTF8字符集,它的兼容性好,在ORACLE8及8I数据库上使用AL32UTF8字符集容易出现问题。随着现在版本11g逐渐开始称为主流版本,8i客户端的情况已经越来越少见了,因此在11.2的DBCA中,UTF8已经不是推荐字符集列表中的一员了。我们在遇到不兼容的问题时就要修改字符集。AL32UTF8-->UTF8修改字符集的步骤:

shutdown immediate; //关闭数据库服务器
startup mount;
alter session set sql_trace=true;
alter system enable restricted session;
alter system set job_queue_processes=0;
alter system set aq_tm_processes=0;
alter database open;
alter database character set internal_use utf8;
alter session set sql_trace=false;
shutdown immediate;
startup;

下面是别人的一个实例:

#su - oracle

$sqlplus "/ as sysdba"

SQL*Plus: Release11.2.0.3.0 Production on Wed Apr 18 14:40:10 2012
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL>

修改之前的字符集
SQL> select * fromv$nls_parameters where parameter='NLS_CHARACTERSET';

PARAMETER VALUE
----------------- ----------------------------
NLS_CHARACTERSET AL32UTF8

SQL>

开始修改
SQL> shutdownimmediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 1603411968 bytes
FixedSize 2226912 bytes
VariableSize 402654496 bytes
Database Buffers 1191182336bytes
RedoBuffers 7348224 bytes
Database mounted.
SQL> alter session setsql_trace=true;

Session altered.

SQL> alter systemenable restricted session;

System altered.

SQL> show parameterjob_queue_process

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 1000
SQL> alter system setjob_queue_processes=0;

System altered.

SQL> show parameteraq_tm_processes

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
SQL> alter databaseopen;

Database altered.

SQL> alter databasecharacter set internal_use utf8;

Database altered.

SQL> alter session setsql_trace=false;

Session altered.

SQL> shutdownimmediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 1603411968 bytes
FixedSize 2226912 bytes
VariableSize 402654496 bytes
Database Buffers 1191182336bytes
Redo Buffers 7348224 bytes
Database mounted.
Database opened.
SQL>

修改之后的字符集
SQL> select * fromv$nls_parameters where parameter='NLS_CHARACTERSET';
PARAMETER VALUE
----------------- ----------------------------
NLS_CHARACTERSET UTF8

SQL>

--------end-------

有关oracle字符集的知识点可以参看下面两篇帖子:

http://blog.csdn.net/robinson_0612/article/details/6030398

http://blog.163.com/zhyang@yeah/blog/static/130143844200991535913471/?fromdm&fromSearch&isFromSearchEngine=yes

oracle 字符集 AL32UTF8、UTF8的更多相关文章

  1. Oracle 11g修改字符集AL32UTF8为ZHS16GBK

    oracle11g更改字符集AL32UTF8为ZHS16GBK当初安装oracle的时候选择的默认安装,结果字符集不是以前经常用的16GBK,要改字符集,从网上找到了方法并试了一下,果然好用! 具体如 ...

  2. Oracle 12C 新特性之 db默认字符集AL32UTF8、PDB支持不同字符集

    一. db默认字符集AL32UTF8Specify the database character set when you create the database. Starting from Ora ...

  3. ORACLE字符集基础知识

    概念描叙    ORACLE数据库有国家字符集(national character set)与数据库字符集(database character set)之分.两者都是在创建数据库时需要设置的.国家 ...

  4. Oracle字符集的查看查询和Oracle字符集的设置修改

    本文主要讨论以下几个部分:如何查看查询oracle字符集. 修改设置字符集以及常见的oracle utf8字符集和oracle exp 字符集问题. 一.什么是Oracle字符集 Oracle字符集是 ...

  5. 如何修改Oracle字符集

    一.什么是Oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库 ...

  6. (转)oracle字符集与汉字

    Oracle与汉字问题与字符集 分类: oracle 2012-10-29 17:31 425人阅读 评论(0) 收藏 举报 Oracle字符集引起的几个问题,常见的就是汉字占多少个字节,其次就是字符 ...

  7. oracle字符集问题总结

    在进行web开发和oracle安装的过程中经常有人对字符集搞不清楚,因此对此做一下总结. 1.第一个问题:字符集之间的区别是什么呢?   常见的字符集有:UTF-8和GBK   (1)GBK字符集 G ...

  8. Oracle 字符集的查看和修改

    Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库工具,错误消息,排序次序,日期 ...

  9. Oracle 字符集的查看和修改 -转

    一.什么是Oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库 ...

随机推荐

  1. linux ---性能监控(工具)

    linux服务器性能监控-nmon Nmon 是一个分析aix和linux性能的免费工具,出自IBM,其采集的数据通过nmon_analyser生成报表 一.下载 官网下载地址 百度网盘 二.运行和使 ...

  2. DataGridView合并单元格(一列或一行)

    #region"合并单元格的测试(一列或一行)" // int?是搜索一种类型(可空类型),普通的int不能为null,而用int?,其值可以为null //private int ...

  3. Android静态图片人脸识别的完整demo(附完整源码)

    Demo功能:利用android自带的人脸识别进行识别,标记出眼睛和人脸位置.点击按键后进行人脸识别,完毕后显示到imageview上. 第一部分:布局文件activity_main.xml < ...

  4. HDU--Elevator(水题)

    Elevator nid=24#time"> Time Limit: 1000ms   Memory limit: 32768K  有疑问?点这里^_^ 题目描写叙述 The high ...

  5. particleDesigner2 positionType按钮

    在particleDesigner2中positionType对应的设置是:

  6. (部署)使用kubernetes的deployment进行RollingUpdate

    rolling update,可以使得服务近乎无缝地平滑升级,即在不停止对外服务的前提下完成应用的更新. replication controller与deployment的区别 replicatio ...

  7. [Jobdu] 题目1214:丑数

    题目描述: 把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7.习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 输入: 输 ...

  8. git的全局变量

    git的全局变量可以用在命令行设置: git config --global user.name "litifeng" git config --global user.email ...

  9. 【Android】自己定义ListView的Adapter报空指针异常解决方法

    刚刚使用ViewHolder的方法拉取ListView的数据,可是总会报异常. 细致查看代码.都正确. 后来打开adapter类,发现getView的返回值为null. 即return null. 将 ...

  10. 2>/dev/null

    2>/dev/null是如果你的命今出错的话,错误报告直接输出到黑洞里不会显示在屏幕上. ls -al 1>list.txt 2>list.err #将显示的数据,正确的输出到lis ...