知识大全 影响Oracle中文显示的字符集分析

Posted

篇首语:积极思考造成积极人生,消极思考造成消极人生。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 影响Oracle中文显示的字符集分析相关的知识,希望对你有一定的参考价值。

影响Oracle中文显示的字符集分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   原因分析

  通过对用户反映情况的分析 发现字符集的设置不当是影响Oracle数据库汉字显示的关键问题 那么字符集是怎么一会事呢?字符集是ORACLE 为适应不同语言文字显示而设定的 用于汉字显示的字符集主要有ZHS CGB US ASCII WE ISO P 等 字符集不仅需在服务器端存在 而且客户端也必须有字符集注册 服务器端 字符集是在安装ORACLE时指定的 字符集登记信息存储在ORACLE数据库字典的V$NLS_PARAMETERS表中 客户端 字符集分两种情况 一种情况是sql*net 以下版本 字符集是在Windows的系统目录下的oracle ini文件中登记的 另一种情况是sql*net 以上(即 位)版本 字符集是在Windows的系统注册表中登记的 要在客户端正确显示ORACLE 数据库中文信息 首先必须使服务器端的字符集与客户端的字符集一致 其次是加载到ORACLE数据库的数据字符集必须与服务器指定字符集一致 因此 把用户存在的问题归纳分类 产生汉字显示异常的原因大致有以下几种

   服务器指定字符集与客户字符集不同 而与加载数据字符集一致

  这种情况是最常见的 只要把客户端的字符集设置正确即可 解决办法见

   服务器指定字符集与客户字符集相同 与加载数据字符集不一致

  这类问题一般发生在ORACLE版本升级或重新安装系统时选择了与原来服务器端不同的字符集 而恢复加载的备份数据仍是按原字符集卸出的场合 以及加载从其它使用不同字符集的ORACLE数据库卸出的数据的情况 这两种情况中 不管服务器端和客户端字符集是否一致都无法显示汉字 解决办法见

   服务器指定字符集与客户字符集不同 与输入数据字符集不一致

  这种情况是在客户端与服务器端字符集不一致时 从客户端输入了汉字信息 输入的这些信息即便是把客户端字符集更改正确 也无法显示汉字 解决办法见

   解决办法

  下面将分别对上述三种情况给出解决办法 为了叙述方便 假设客户端使用WINDOWS / 环境 并已成功地配置了TCP/IP协议 安装了ORACLE的sql*net sql*pluse产品

   设置客户端字符集与服务器端字符集一致

  假设当前服务器端使用US ASCII字符集

  ( )查看服务器端字符集

  通过客户端或服务器端的sql*plus登录ORACLE的一个合法用户 执行下列SQL语句 SQL > select * from V$NLS_PARAMETERS

   parameter valueNLS_LANGUAGE AMERICANNLS_TERRITORY AMERICA… … NLS_CHARACTERSET US ASCIINLS_SORT BINARYNLS_NCHAR_CHARACTERSET US ASCII

  从上述列表信息中可看出服务器端Oracle数据库的字符集为 US ASCII

  ( )按照服务器端字符集对客户端进行配置

  配置方法有两种

  安装ORACLE的客户端软件时指定

  在安装ORACLE的客户端产品软件时 选择与ORACLE服务端一致的字符集(本例为US ASCII)即可

  修改注册信息的方法

  根据ORACLE 客户端所选sql*net 的版本分为下列两种情况

  a 客户端为 sql*net 以下版本

  进入Windows的系统目录 编辑oracle ini文件 用US ASCII替换原字符集 重新启动计算机 设置生效

  b 客户端为 sql*net 以上版本

  在WIN 下 运 行REGEDIT 第一步选HKEY_LOCAL_MACHINE 第二步选择SOFARE 第三步选择 ORACLE 第四步选择 NLS_LANG 键 入 与服 务 器 端 相 同 的 字 符 集(本例为 AMERICAN_AMERICAN US ASCII)

   强制加载数据字符集与服务器端字符集一致

  假设要加载数据从原ORACLE数据库卸出时的字符集为US ASCII 当前ORACLE服务器字符集为WE ISO P

  下面提供三种解决方法

  ( ) 服务器端重新安装ORACLE

  在重新安装ORACLE 时选择与原卸出数据一致的字符集(本例为US ASCII)

  加载原卸出的数据

  这种情况仅仅使用于空库和具有同一种字符集的数据

  ( )强行修改服务器端ORACLE当前字符集

  在用imp命令加载数据前 先在客户端用sql*plus登录system DBA用户 执行下列SQL语句进行当前ORACLE数据库字符集修改 SQL > create database character set US ASCII

    * create database character set US ASCIIERROR at line :ORA : insufficient privileges

  你会发现语句执行过程中 出现上述错误提示信息 此时不用理会 实际上ORACLE数据库的字符集已被强行修改为US ASCII 接着用imp命令装载数据 等数据装载完成以后 shutdown 数据库 再startup 数据库 用合法用户登录ORACLE数据库 在sql> 命令提示符下 运行select * from V$NLS_PARAMETERS 可以看到ORACLE数据库字符集已复原 这时再查看有汉字字符数据的表时 汉字已能被正确显示

  ( )利用数据格式转储 避开字符集限制

  这种方法主要用于加载外来ORACLE数据库的不同字符集数据 其方法如下

cha138/Article/program/Oracle/201311/16679

相关参考

知识大全 解决oracle10g安装后的中文显示乱码

在安装完oracleg后由于jre默认使用的字体问题使得emdbcanetcanetmgr显示中文时出现□□字样的乱码下面来说明这个问题的解决办法  改变$ORACLE_HOME/jdk目录下的jre

知识大全 详细介绍oracle数据库字符集

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

知识大全 oracle字符集文档

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

知识大全 Oracle的字符集问题

Oracle的字符集问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在建库时catproc一

知识大全 oracle数据字符集和排序

  今天难得有点小时间实际操作了一下关于oracle数据库中的字符集和排序相关的命令特此整理出来以备后用  Java代码  SQL>select*fromv$nls_valid_valueswh

知识大全 怎样修改查看Oracle字符集

怎样修改查看Oracle字符集  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  [Q]怎么样查看数

知识大全 全面认识Oracle数据库字符集

全面认识Oracle数据库字符集  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  什么是Oracl

知识大全 巧妙转换ORACLE数据库字符集

巧妙转换ORACLE数据库字符集  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在大型数据库管理

知识大全 修改oracle10g的字符集

  修改数据库字符集为ZHSGBK  查看服务器端字符集  SQL>select*fromV$NLS_PARAMETERS;  修改  $sqlplus/nolog  SQL>conn/a

知识大全 Oracle在数据转储时的字符集问题

Oracle在数据转储时的字符集问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  作为一个Or