oracle字符集文档

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

  一、 Oracle字符集相关知识

  1 参数说明

  影响oracle数据库字符集最重要的参数是NLS_LANG参数

  Oracle的字符集命名遵循以下命名规则:

     <Language><bit size><encoding>

  即: <语言><比特位数><编码>

  比如: ZHS16GBK表示采用GBK编码格式、16位(两个字节)简体中文字符集

  它的格式如下:NLS_LANG = language_territory.charset

  它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性

  其中:Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK

  从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分,

  所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。

  2 查看数据库字符集

  这涉及三方面的字符集:

  一是:oracel server端的字符集;

  二是:oracle client端的字符集;

  三是:dmp文件的字符集;

  在做数据导入的时候,需要这三个字符集都一致才能正确导入。

  2.1查询oracle server端的字符集

  有很多种方法可以查出oracle server端的字符集

  ①比较直观的查询方法

  SQL> select userenv('language') from dual;

  查询结果如下: SIMPLIFIED CHINESE_CHINA.ZHS32GB18030

  ②查看有关字符集的所有参数

  SELECT * FROM v$nls_parameters;

  结果中的NLS_CHARACTERSET ZHS32GB18030

  2.2查看dmp文件的字符集

  用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集:

  SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;ZHS16GBK

  2.3查询oracle client端的字符集

  在windows平台下,就是注册表里面相应OracleHome的NLS_LANG。具体路径:

  Win+R àregedit à HKEY_LOCAL_MACHINESOFTWAREORACLE nls_lang 显示本地的字符集,这样就只影响这个窗口里面的环境变量。

  在unix平台下,就是环境变量NLS_LANG。

  $echo $NLS_LANG

  AMERICAN_AMERICA.ZHS16GBK

  如果检查的结果发现server端与client端字符集不一致,建议统一修改为同server端相同的字符集。

  2.4建议

  关于字符集客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件。

  客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件

  字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是 American_America.zhs16gbk。

  2.5补充内容

  2.5.1 数据库服务器字符集

  SELECT * FROM nls_database_parameters;

  来源于props$,是表示数据库的字符集。

  2.5.2 客户端字符集环境

  SELECT * FROM nls_instance_parameters;

  其来源于v$parameter,表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表

  2.5.3 会话字符集环境

  SELECT * FROM nls_session_parameters;

  来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。

  二、关于oracle字符集修改

  一旦数据库创建后,数据库的字符集理论上讲是不能改变的。因此,在设计和安装之初考虑使用哪一种字符集十分重要。根据Oracle的官方说明,字符集的转换是从子集到超集受支持,反之不行。如果两种字符集之间根本没有子集和超集的关系,那么字符集的转换是不受oracle支持的。对数据库 server而言,错误的修改字符集将会导致很多不可测的后果,可能会严重影响数据库的正常运行,所以在修改之前一定要确认两种字符集是否存在子集和超集的关系。一般来说,除非万不得已,我们不建议修改oracle数据库server端的字符集。特别说明,我们最常用的两种字符集ZHS16GBK和 ZHS16CGB231280之间不存在子集和超集关系,因此理论上讲这两种字符集之间的相互转换不受支持。

  下例为把数据库的字符集从ZHS16GBK修改为 ZHS32GB18030。

  1、执行脚本

  对于每个sql脚本的含义,请见注释①~⑥

  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;

  set linesize 120;

  alter database character set INTERNAL_USE ZHS32GB18030;

  shutdown immediate ;

  startup ;

  2、 相关参数注释

  查看字符集参数:SELECT * FROM v$nls_parameters;

  ①SQL_TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,SQL_TRACE是非常常用的方法。

  sql_trace =true

  在全局启用SQL_TRACE会导致所有进程的活动被跟踪,包括后台进程及所有用户进程,这通常会导致比较严重的性能问题,所以在生产环境中要谨慎使用,这个参数在10g之后是动态参数,可以随时调整,在某些诊断中非常有效。

  提示: 通过在全局启用sql_trace,我们可以跟踪到所有后台进程的活动,很多在文档中的抽象说明,通过跟踪文件的实时变化,我们可以清晰的看到各个进程之间的紧密协调.

  ②在使用过程中对数据库进行限制

  ALTER SYSTEM DISABLE RESTRICTED SESSION来取消数据库的受限制状态。在数据库受限制的过程中,只有对数据库拥有CREATE SESSION权限的用户才能够连接到数据库。这种状态有利于对数据库进行备份,恢复,导入,导出等操作。

  ③首先设置JOB_QUEUE_PROCESSES=0,Oracle会杀掉CJQ0及相应job进程

  ④aq_tm_processes值可选在1到10之间,0代表是关闭队列监视

  ⑤利用INTERNAL_USE 关键字修改区域设置,目的是让Oracle数据库绕过了子集与超集的校验

  ⑥STARTUP NOMOUNT

  然后可以使用ALTER DATABASE MOUNT 来挂上数据库。可以使用: STARTUP MOUNT来启动数据库,并挂载上数据库,但是保持数据库的关闭状态。稍后可以使用ALTER DATABASE OPEN来打开数据库。

时间: 2024-10-22 11:46:23

oracle字符集文档的相关文章

【MOS】中文文档列表 - Oracle Database (文档 ID 1533057.1)

中文文档列表 - Oracle Database (文档 ID 1533057.1) 类型: 状态: 上次主更新: 上次更新: ANNOUNCEMENT PUBLISHED 2017-2-23 2017-2-23     文档内容 详细信息 操作   Oracle 数据库技术支持通讯   安装/升级/降级/迁移相关     日常管理相关   性能相关     集群及存储相关   高可用相关   TimesTen 内存数据库 联系人 参考 适用于: Oracle Database - Enterp

【MOS】Top Ten Performance Mistakes Found in Oracle Systems. (文档 ID 858539.1)

In this Document Purpose Troubleshooting Steps References APPLIES TO: Oracle Database - Enterprise Edition - Version 9.2.0.8 and laterInformation in this document applies to any platform.RDBMS PURPOSE The purpose of this note is to inform reader abou

Oracle在线文档下载 【转载自@secooler】

今天有同事询问Oracle在线浏览的手册是否可以下载,确实下载到本地浏览才是非常方便的,之前从@secooler大神这里找过下载链接,特此转载,以备查询,向大神致敬! @secooler 转载地址:http://space.itpub.net/519536/viewspace-567429 oracle不同版本的官方文档在线参考和打包下载地址汇总,罗列在这里,供你我参考. 1.9iOracle官方文档 1)在线浏览 http://www.oracle.com/pls/db92/homepage

Oracle数据字典文档

select * from dictionary; --数据字典 数据字典是Oracle存放有关数据库教程信息的地方,其用途是用来描述数据的. 比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等. 数据库数据字典是一组表和视图结构.它们存放在SYSTEM表空间中 当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息. 用户可以用SQL语句访问数据库数据字典. 数据字典内容包括: 1,数据库中所有模式对象的信息,如表.视图.簇.及索引等. 2,分配多少

Oracle 11gR2 restart 单机使用asm存储 主机名发生更改处理过程 (文档 ID 986740.1)

How to Reconfigure Oracle Restart (文档 ID 986740.1) In this Document Goal Solution   1. Remove Oracle Restart configuration   2. Reconfigure Oracle Restart   3. Add ASM back to Oracle Restart configuration   4. Start up ASM instance   5. Recreate ASM 

使用UTF-8对XML文档进行编码

Google的Sitemap服务要求发布的所有站点地图必须采用Unicode的UTF-8编码.Google甚至不允许其他Unicode编码(如UTF-16),更不用说ISO-8859-1这样的非Unicode编码了.从技术上说,这意味着Google使用的是非标准XML解析器,因为XML Recommendation特别要求"所有XML处理程序必须接受Unicode 3.1的UTF-8和UTF-16编码",但这确实是一个大问题吗? 每个人都能使用UTF-8 普遍性是选择UTF-8的第一个

【MOS】Cluster Health Monitor (CHM) FAQ (文档 ID 1328466.1 ID 2062234.1)

11gR2 新特性:Oracle Cluster Health Monitor(CHM)简介 Cluster Health Monitor(以下简称CHM)是一个Oracle提供的工具,用来自动收集操作系统的资源(CPU.内存.SWAP.进程.I/O以及网络等)的使用情况.CHM会每秒收集一次数据.    这些系统资源数据对于诊断集群系统的节点重启.Hang.实例驱逐(Eviction).性能问题等是非常有帮助的.另外,用户可以使用CHM来及早发现一些系统负载高.内存异常等问题,从而避免产生更严

如何全文搜索oracle官方文档

[技巧]如何全文搜索oracle官方文档   一.1  BLOG文档结构图       一.2  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 如何在线和离线查看oracle官方文档,尤其对于没有外网的朋友来说离线搜索官方文档是重中之重(重点) ② 如何查看其它类似的html官方文档,如OGG的官方文档 ③ 如何制作chm帮助文件 ④ 如何精简官方文档   一.3  为什么来查看官方文档     对于学习oracl

经典文档:Oracle Database 12.2新特性概览解读下载

在2017 OOW大会上,关于Oracle Database 12.2 数据库的新特性介绍仍然引人瞩目,会后公布了 Oracle VP Swonger的文档,我们在此进行重点新特性的解读,并把这个PPT分享给大家. 关于In-Memory选件,12.2 的重要增强是在 ADG 实现 In-Memory 缓存,并且可以和主库以不同区间压缩,通过备库内存承载OLAP的分析计算.实时计算在Oracle数据库中可以被越来越好的支持. 在 12.2 中,In-Memory Fast-Start 特性,支持