Oracle for Linux sqlplus 的乱码有关问题
一:故障重现
首先在Linux shell下面连接 Oracle数据库
$sqlplus /nolog
SQL>conn /as sysdba
SQL>startup(环境变量设置好以后,数据库会自动启动)
SQL>如果有问题这里差不多能显示出来,就是一个个的?????,如果用远程软件连接的话,就可能是一个个方块.
二:解决办法
退出sqlplus,在Oracle家目录下查看环境变量文件
ls -la
我的是.bash_profile
vim .bash_profile
在下面一行加入
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_LANG
退出vim
三:$. ./.bash_profile(重新加载环境变量)
再连数据库试试吧,应该没问题了,这里说的有个前提,就是装oracle的时候,选择的字符集是AMERICAN_AMERICA.ZHS16GBK
如果是别的字符集,就用类似方法试试.同样,在/etc/sysconfig/i18n里设置下兼容的语言以及字体.
select userenv(’language’) from dual
显示的结果是:
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
那就把字符集改写成中文的NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
==================================
2011、7、11最新总结,最近的情况让我对上述结论有了新的看法,安装oracle数据库的经历少说有20次了,从11gR 1 32位跟64位,到11gR2 64位.装几次就会遇到不同的问题.R2 64位版本貌似对系统的要求比较高,内存资源池的共享区要求貌似不小.
总之,今天有得到个心得结论.
上面说的都不完全对,要自己试试以后才知道.这装好之后,select userenv(’language’) from dual; 结果就是简体中文,一点都没错我装的时候就是选得简体中文,这样报错之后能看个明白.
可是不管我怎么变更shell下的语言,都是显示乱码,郁闷至极的时候我就把NLS_LANG=AMERICAN_AMERICA.ZHS16GBK结果好了.