- 浏览: 568157 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (262)
- oracle (43)
- 打包 (3)
- linux (33)
- nginx (20)
- ftp (1)
- tomcat (8)
- mysql (22)
- plsql (4)
- jms (3)
- nosql (2)
- 运维监控 (5)
- 数据采集 (0)
- 测试 (2)
- jvm (5)
- 自动化数据库迁移 (2)
- 密码 (1)
- java代码 (7)
- java多线程,线程安全 (8)
- xml (1)
- spring (6)
- svn (2)
- oracle备份 (1)
- oracle 诊断 (3)
- oracle 归档 (4)
- java 虚拟机(JVM) (2)
- hibernate (5)
- activemq (2)
- http (2)
- linux_shell (9)
- python (3)
- ant (1)
- oracle rac (1)
- php (2)
- js (1)
- mongo (1)
- java 反射 (1)
- jira (1)
- 打包 maven (1)
- zabbix (2)
- lvs+keepalive (1)
- 防火墙 (1)
- memcache (2)
- redis (1)
最新评论
-
di1984HIT:
学习了~~~~
服务器大量TIME_WAIT -
springdata_spring:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
maven常用命令 -
李小斌_2014:
我也遇到了,现在完美解决。
ORA-01422: 实际返回的行数超出请求的行数 -
啸风8023:
...
tomcat启动报错 -
fke153:
这个问题确实很坑人啊,学习了
ORA-01422: 实际返回的行数超出请求的行数
文章来源http://blog.csdn.net/nini1109/article/details/4158796
RedHat linux AS4.0安装了oracle10g,同时创建数据库实例sc,后来又用dbca建立一个数据库实例st,发现在oracle系统用户下用sqlplus连接st实例时出现乱码,应该是中文无法显示造成的,但连接sc实例时无乱码,显示英文。上网搜集了一下资料,修改了oracle系统用户的环境变量在.bash_profile中新增了以下内容解决: export NLS_LANG=AMERICAN_AMERICA.UTF8 export LANG=en_US.UTF-8 分析原因: 引用网上帖子: oracle字符集问题一般可以分为三类: 数据库字符集, sqlplus的字符集(客户端字符集), 终端程序的字符集(非oracle的)。 1、数据库字符集。 数据库字符集是所有字符问题的核心,只有数据库本身的字符集正确了,客户端的字符集才可能正确。这里只的客户端包括sqlplus以及我们自己读数据库的应用程序。 在定位问题时,我们需要先看看数据库当前是什么字符集。 1)查询数据库字符集 select * from nls_database_parameters 其中 nls_language表示了显示方式, 就是sqlplus的程序的显示字体,有SIMPLIFIED CHINESE,American america 其中 nls_characterset是字符集设定, 常用的一些字符集有UTF8,US7ASCII,WE8ISO8859P1,ZHS16CGB231280,ZHS16GBK, AL32UTF8 2)修改数据库字符集 当发现数据库字符集不正确时,如我们期望时GBK的,而数据库当前是其他的,从而引起中文乱码。这时我们需要修改数据库字符集。步骤如下: $sqlplus /nolog SQL>conn / as sysdba; 若此时数据库服务器已启动,则先执行SHUTDOWN IMMEDIATE命令关闭数据库服务器,然后执行以下命令: 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 ZHS16GBK; SQL>SHUTDOWN IMMEDIATE; SQL>STARTUP 2 客户端字符集 如果服务器端的字符集是正确的,而在客户端下,如sqlplus仍然不能正确显示中文,这一般是由于服务器端的字符集设定与客户端的字符集设定不同造成的。只要将两者修改一致就可以解决问题。 1)查询客户端字符集 select * from nls_instance_parameters 客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter, 表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表 select userenv('language') from dual; 会话字符集环境 select * from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。 客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件 字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。 或者.zhs16gbk。注意zhs16gbk前面那个点是必须的哦!! 2) 修改客户端字符集 oracle 的sqlplus会去读取OS中环境变量下的nls_lang信息(关键在这里,通过以上命令查看 select * from nls_database_parameters 显示 NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ select * from nls_instance_parameters 显示 NLS_LANGUAGE SIMPLIFIED CHINESE NLS_TERRITORY CHINA NLS_SORT NLS_DATE_LANGUAGE NLS_DATE_FORMAT NLS_CURRENCY select * from nls_session_parameters 显示 NLS_LANGUAGE SIMPLIFIED CHINESE NLS_TERRITORY CHINA NLS_CURRENCY RMB 也就是说会话字符集与终端字符集一致,而与数据库字符集设置不一致。 另一个数据库实例sc 数据库字符集 select * from nls_database_parameters 显示 NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ select * from nls_instance_parameters 显示 NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_SORT NLS_DATE_LANGUAGE NLS_DATE_FORMAT NLS_CURRENCY 在linux下 select * from nls_session_parameters 显示 NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA 用TOD 在windows下显示 NLS_LANGUAGE SIMPLIFIED CHINESE NLS_TERRITORY CHINA NLS_CURRENCY RMB 这个我还搞不明白为什么windows与linux会话字符集为什么不一样。 更搞不明白的是为什么两个数据库实例用同一个系统用户查询的,也就是说环境变量是一样的,但查询结果终端字符集为什么会不一样?初步分析(当然不一定对,欢迎指正)是两个数据库实例的参数文件不一致引起的,因为alter session>环境变量>注册表>参数文件,也就是说因为环境变量没有设置,但sc与st数据库实例参数文件不同,但是参数文件在什么地方设还不清楚,有高手欢迎指点! 但基本上问题锁定是因为终端字符集与数据库字符集不一致引起,在用户的环境变量中增加 export NLS_LANG=AMERICAN_AMERICA.UTF8 export LANG=en_US.UTF-8 问题解决 再次查看客户端字符集 select * from nls_instance_parameters 还是显示 NLS_LANGUAGE SIMPLIFIED CHINESE NLS_TERRITORY CHINA NLS_SORT NLS_DATE_LANGUAGE NLS_DATE_FORMAT NLS_CURRENCY 但 select * from nls_session_parameters 显示 NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ 看来只要本次会话字符集正确就没问题了,经过验证确实如此,用 alter session set NLS_LANGUAGE=‘AMERICAN’后本次会话也不会出现乱码的。 ) NSL_LANG包括三个部分(语言_地区.字符集)就是V$NLS_PARAMETERS表中的NLS_LANGUAGE,NLS_TERRITORY,NLS_CHARACTERSET 例如可以在cmd中键入 set nls_lang="Simplified chinese_china.utf8" set nls_lang="american_america.us7ascii" set nls_lang="american_america.zhs16gbk" set nls_lang="Simplified chinese_china.zhs16gbk" set nls_lang=".utf8" set nls_lang=".zhs16gbk" set nls_lang=".us7ascii" unix下类似, 不过nls_lang要大写NLS_LANG, 在.profile或这.bash_profile(根据你用的shell)里更改NLS_LANG可以长久保持环境变量值. 3、终端字符集 如果数据库字符集和sqlplus的字符集一致, 还是不能正确显示了, 那很可能就是你的终端应用程序的字符集不支持了. 例如你用bash登陆sqlplus, 如果你的bash是个小字符集, 那么就不能正常显示了.linux修改bash的字符集, 可以先键入locale, 看有哪些环境变量, 再用export设置.
发表评论
-
ORA-28001: the password has expired
2016-05-23 10:28 866来源 http://blog.csdn.net/jrq/art ... -
oracle 索引未生效
2016-05-06 12:17 1787不走索引大体有以下几个原因: • 你在Instance级 ... -
通过sid查找sql
2016-05-05 11:08 1555这是当前运行的sql语句 select sid, ... -
oracle 表空间满
2016-03-26 18:24 1471今天Oracle的表空间突然满了,建表的时候是自动扩展,但还是 ... -
ORA-00030: User session ID does not exist
2016-02-17 16:53 2721Oracle进程被KILL之后,状态被置为" ... -
Oracle 用户表空间查看、修改大小、设置自增长等
2016-01-22 15:58 1303首先登入某个用户,查看某个用户在哪个表空间下: ... -
oracle 各种授权
2015-12-07 10:57 646alter any cluster 修改任 ... -
打造上千万长连接及oracle调优
2014-02-23 20:29 1235... -
oracle uuid生成
2014-02-10 09:30 857CREATE TABLE TEST( ID VARCHA ... -
oracle 备份
2013-11-05 14:59 885全备份(0级备份) $ vi lev0_bak.sh # ... -
查看用户权限
2013-10-15 11:23 7541、查看所有用户 select * from d ... -
oracle 索引类型
2013-06-07 18:36 955附件是oracle索引的类型 -
oracle表空间利用率
2013-02-22 10:34 975SELECT * FROM ( SELECT D.TA ... -
aix系统cpu使用率过高
2012-10-29 14:11 6329今天发现oracle的cpu使用率过高,由于机器上只要orac ... -
oracle 索引监控
2012-10-24 13:51 1019oracle 索引监控 打开索引 alter in ... -
oracle修改字符集
2012-08-31 14:38 1054oracle修改字符集 查询oracle server端 ... -
oracle 触发器 new ,old
2012-08-27 11:28 1012特性 INSERT UPDATE DELE ... -
oracle PGA SGA
2012-08-03 22:54 1400PGA与SGA的分配 _________________ ... -
ORACLE查看并修改最大连接数
2012-07-25 09:43 2897文章来源http://hi.baidu.com ... -
oracle logminer
2012-07-24 16:16 1064execute dbms_logmnr_d.build( ...
相关推荐
Linux 下 Oracle 中文乱码字符集设置 Linux 下的 Oracle 数据库在导入数据库时出现中文乱码问题,这是因为 Oracle 数据库中的字符集格式不支持中文。解决方法是通过修改字符集格式,将其修改成支持中文的格式,这样...
### JDBC 连接 Oracle 字符集不同导致乱码问题解析及解决方案 #### 问题背景 在使用 JDBC(Java Database Connectivity)连接 Oracle 数据库时,可能会遇到一个常见的问题:从远程 Oracle 数据库获取的数据出现乱码...
由于历史的原因,早期的oracle没有中文字符集(如oracle6、oracle7、oracle7.1),但有的用户从那时起就使用数据库了, 并用US7ASCII字符集存储了中文,或是有的用户在创建数据库时,不考虑清楚,随意选择一个默认的...
本文将深入探讨Oracle数据库字符集的概念、重要性、修改过程及其潜在问题,特别是当尝试修改数据库字符集时遇到的乱码问题。 ### Oracle数据库字符集概述 Oracle数据库字符集是指用于表示数据库中所有字符数据的...
在使用Oracle数据库的过程中,可能会遇到字符显示异常的问题,通常被称为“乱码”。这种情况会影响到数据的正确读取与处理,进而影响到业务流程的正常进行。本文将针对Oracle数据库中的乱码问题进行详细的分析,并...
"Oracle字符集(4).txt"可能涵盖字符集问题的诊断和修复,如如何识别和处理乱码问题,以及如何通过ALTER DATABASE命令更改数据库字符集。 最后,"Oracle字符集(5).txt"可能涉及数据导入导出与字符集的关联,如...
Oracle数据库在处理字符集时,有时会出现数据乱码的问题,这通常是由于字符集不匹配或者在数据传输过程中编码转换不当导致的。"ORACLE_CHAR_ToolS"是一个专门针对这类问题的工具集合,它包含了两个注册表文件,用于...
总之,解决Linux上Oracle汉字乱码问题涉及多个层面,包括安装JDK、更新字体配置以及正确设置数据库和系统的字符集。通过本文提供的方法,可以有效地避免和解决这个问题,让Linux上的Oracle数据库在处理中文数据时...
Oracle数据库作为一款广泛应用的关系型数据库系统,其与Java应用程序的集成常常会遇到各种问题,其中之一就是字符编码导致的中文乱码问题。本文将深入探讨如何通过JDBC(Java Database Connectivity)连接Oracle远程...
网上基本找不到,sqlserver2012版本链接oracle乱码问题解决实测版。
### Oracle字符集的查看与客户端字符集的修改 #### 一、Oracle字符集的基本概念 在Oracle数据库系统中,字符集(charset)是用于表示文本数据的编码方式。正确设置和管理字符集对于确保数据的一致性和正确性至关重要...
在Windows环境下,Oracle 10g客户端的安装可能会遇到中文乱码问题,这通常是因为新安装的客户端与旧版本(如Oracle 9i)之间的字符集不兼容或者未正确设置导致的。 首先,我们要理解字符集的概念。字符集是一种定义...
oracle修改字符集,解决乱码问题.
Oracle 字符集乱码问题是指在 Oracle 数据库中,中文字符显示为乱码的现象。该问题可能是由于安装 Oracle 数据库时,选择了错误的字符集,或者客户端和服务器端的字符集不一致。 解决办法: 1. 检查数据库字符集...
oracle乱码解决功能的关键点在于服务器端和客户端的字符集是否一致。如果服务器端和客户端的字符集不一致,汉字将无法正确显示。解决方法是将客户端的字符集设置为与服务器端相同的字符集。 oracle乱码解决功能...
Oracle字符集转换是一个重要的主题,尤其在处理多语言数据或者跨不同版本的Oracle数据库交互时。Oracle数据库系统支持多种字符集,以满足全球化的数据存储需求。字符集定义了数据库如何存储和显示字符,不同的字符集...
替换oracle解压之后的database文件中的filegroup2文件 路径 :database/stage/Components/oracle.jdk/1.6.0.75.0/1/DataFiles
当SQL Server尝试通过ODBC或JDBC等方式连接到Oracle数据库时,如果两个系统的字符集设置不一致,就可能会导致中文字符显示为乱码。这个问题在64位操作系统上尤其常见,因为不同的数据库管理系统(DBMS)之间可能存在...
在Linux环境下,Oracle数据库的DBCA(Database Configuration Assistant)和NETCA(Network Configuration Assistant)工具在处理汉字时可能会出现乱码问题,表现为汉字显示为一个个方框。这通常是由于系统缺少对...