信好多朋友都遇到这个问题,在网上一搜一大片,但是真正回帖的人不多,在此我提供下我的解决方案,希望能对你们有帮助。
  一:故障重现
 首先在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结果好了。
我服气了,不过显示的都是英文。
英文也行啊,总比乱码好多了。
想了想原因,可能是本机的语言没装完全吧。

继续....
让各种错误都发生出来吧!