信好多朋友都遇到这个问题,在网上一搜一大片,但是真正回帖的人不多,在此我提供下我的解决方案,希望能对你们有帮助。
一:故障重现
首先在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
export NLS_LANG
退出vim
三:$. ./.bash_profile(重新加载环境变量)
再连数据库试试吧,应该没问题了,这里说的有个前提,就是装oracle的时候,选择的字符集是AMERICAN_AMERICA.ZHS16GBK
如果是别的字符集,就用类似方法试试。同样,在/etc/sysconfig/i18n里设置下兼容的语言以及字体。
如果是别的字符集,就用类似方法试试。同样,在/etc/sysconfig/i18n里设置下兼容的语言以及字体。
select userenv('language') from dual
显示的结果是:
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
显示的结果是:
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结果好了。
我服气了,不过显示的都是英文。
英文也行啊,总比乱码好多了。
想了想原因,可能是本机的语言没装完全吧。
继续....
让各种错误都发生出来吧!
转载于:https://blog.51cto.com/libin580/648989