寻觅生命中的那一片浅草......

Linux上安装Oracle汉字乱码完整解决方案

前言
相信每一位在Linux上安装过Oracle的朋友都受过汉字”口口”形乱码的困扰,在论坛上搜索了一下,没有找到完整的解决方案,大都是建议将Linux改成英文环境,有部分回复提到过更改font.properties的解决方案,但语焉不详,帮助不大。

当然,将Linux改成英文环境不是不可以,但除了Oracle外,现在的Linux上的Java程序越来越多,很多程序没有像Oracle那样提供了多种语言资源,即使将Linux改成了英文环境,也会有”口口”形乱码。所以如果能解决掉这个乱码的问题是一举多得滴。

鉴于此种情况,偶在网上搜索了一些资料,结合实践一步一步摸索,终于把这个问题搞通了。

其实操作不是十分复杂,只要对Linux的操作有些了解,是可以在一刻钟内搞定的。

偶整理此文,一方面是怕以后再做类似操作时记不起来了,另一方面也希望对遇到类似问题的朋友们有所帮助。

一.安装JDK
在/tmp下建立一个临时的文件夹
[root@lsjlinux root]# cd /tmp
[root@lsjlinux root]# mkdir javacn
[root@lsjlinux tmp]# cd javacn

从sun网站上下载j2sdk-1_4_2_02-linux-i586.bin并保存到/tmp/javacn

给文件加上可执行的权限
[root@lsjlinux javacn]# chmod 755 j2sdk-1_4_2_02-linux-i586.bin

执行文件安装JDK
[root@lsjlinux javacn]# ./j2sdk-1_4_2_02-linux-i586.bin
……(一大堆的license的信息)
询问是否同意,当然选yes
………

安装完后删除安装文件
[root@lsjlinux javacn]# rm -rf *.bin

感觉起来这个安装就是解压一下而已,解压出来的结果就是j2sdk1.4.2_02这个文件夹。

这个文件夹不能放在/tmp里面,要不哪天一不小心删除了怎么办,搬家并改名!
[root@lsjlinux javacn]# mv j2sdk1.4.2_02 /usr/j2sdk

现在JDK还不能算安装完成了,还要设置一下环境变量:

[root@lsjlinux usr]# cd /etc
[root@lsjlinux etc]# vi profile
在export PATH前加入下面一段
JAVA_HOME=/usr/j2sdk
export JAVA_HOME

JRE=$JAVA_HOME/jre
export JRE

PATH=$JAVA_HOME/bin:$JRE/bin:$PATH

现在注销一下并重登录

OK,JDK安装完毕!

二.安装系统字体
将附件文件解压到/tmp/javacn中,解压后的结果如下所示:
[root@lsjlinux root]# cd /tmp
[root@lsjlinux tmp]# cd javacn
[root@lsjlinux javacn]# ls -l
总用量 23184
-rw-r–r–    1 root     root         8102 1970-01-01  font.properties
drwxr-xr-x    9 root     root         4096  6月 24 15:36 j2sdk1.4.2_02
-rw-r–r–    1 root     root     12642204 1970-01-01  SimSun18030.ttc
-rw-r–r–    1 root     root     10500352 1970-01-01  simsun.ttc
-rw-r–r–    1 root     root         7764 1970-01-01  sm.sh
-rw-r–r–    1 root     root       260472 1970-01-01  tahomabd.ttf
-rw-r–r–    1 root     root       265528 1970-01-01  tahoma.ttf

下面需要将$JRE/lib中的font.properties文件改名备份,并将/tmp/javacn中的font.properties文件拷贝到$JRE/lib中

[root@lsjlinux root]# cd $JRE
[root@lsjlinux jre]# cd lib

[root@lsjlinux lib]# mv font.properties font.properties.bak
[root@lsjlinux lib]# cp /tmp/javacn/font.properties ./

剩下的操作就是执行/tmp/javacn/sm.sh了。
在执行sm.sh后系统后自动重启,所以在执行下面的操作前请一定保存正在进行的工作!
[root@lsjlinux root]# cd /tmp
[root@lsjlinux tmp]# cd javacn
[root@lsjlinux javacn]# ./sm.sh
bash: ./sm.sh: 权限不够
[root@lsjlinux javacn]# chmod 755 sm.sh
[root@lsjlinux javacn]# ./sm.sh

此处操作系统会重新启动。

第二部分操作完成。

三.设置操作系统字体
重新启动登录后,按如下步骤操作:
(下面的步骤是KDE里的,GNOME里应该差不多)

开始->控制中心->外观和主题->字体
点调整所有字体,按如下界面中配置,选中字体复选框,并在列表中选择Simsun(实际上这个就是大家在Window里很熟悉的宋体),字体样式不用管它,大小复选框选中,并在列表中选择9,配置完成后点确定。

回到上一层窗口点应用并关闭窗口。
现在应该能明显感觉到Linux里的字体变得好看一些了。

但还有问题,打开终端控制台,发现字体间距太宽了,如下所示:
这个好解决,点终端控制台的菜单:
设置->字体->定制
弹出如下窗口:
左边列表中选择Monospace,大小一列中选择9即可。
设置完了千万要记得保存一下:
设置->保存设置

调整后的结果如下所示:

OK,界面字体调整完毕!

四.安装Oracle
此时切换到Oracle用户,运行./runInstaller,出来的界面应该是亲切的中文界面了,如果还是乱码请检查上面的步骤。
安装Oracle的步骤在此就不费笔墨了。
不过安装完后还有一点小小的尾巴工程。
安装完后运行dbca创建数据库时发现又是乱码,这个在网上没有资料提到过,偶经过反复摸索才找到了问题所在,原来Oracle安装后它会装上自己的JDK,它的几个工具用得都是它自己的JDK,咱们前面所做的努力都没有起作用。
不过这个好解决,改!

只需更改红色的部分,其他地方不需要更改

先改dbca
bash-2.05$ cd $ORACLE_HOME
bash-2.05$ cd bin

bash-2.05$ vi dbca
将最后一段
# Run DBCA
$JRE_DIR/bin/jre -DORACLE_HOME=$OH -DJDBC_PROTOCOL=thin -mx64m -classpath $CLASS
PATH oracle.sysman.assistants.dbca.Dbca $ARGUMENTS
改成:
# Run DBCA
java -DORACLE_HOME=$OH -DJDBC_PROTOCOL=thin -mx64m -classpath $CLASS
PATH oracle.sysman.assistants.dbca.Dbca $ARGUMENTS

再改oemapp
bash-2.05$ vi oemapp
也是最后一段
if [ “$1” = “ocmcli” ]
then
exec $JRE -DADMIN_WRL=$ADMIN_WRL -DORACLE_HOME=$ORACLE_HOME -DORBdisableLoca
tor=true -Djdbc.backward_compatible_to_816=true $JREOPTIONS_STRING -$CLASSPATH_Q
UAL $CLASSPATHADD oracle.sysman.vtx.vtxOemApp.OemApp $APPLICATION “$2” “$3” “$4”
“$5” “$6” “$7” “$8” “$9”
else
exec $JRE -DADMIN_WRL=$ADMIN_WRL -DORACLE_HOME=$ORACLE_HOME -DORBdisableLoca
tor=true -Djdbc.backward_compatible_to_816=true $JREOPTIONS_STRING -$CLASSPATH_Q
UAL $CLASSPATHADD oracle.sysman.vtx.vtxOemApp.OemApp $APPLICATION $2 $3 $4 $5 $6
$7 $8 $9
fi

改成:
if [ “$1” = “ocmcli” ]
then
java -DADMIN_WRL=$ADMIN_WRL -DORACLE_HOME=$ORACLE_HOME -DORBdisableLoca
tor=true -Djdbc.backward_compatible_to_816=true $JREOPTIONS_STRING -$CLASSPATH_Q
UAL $CLASSPATHADD oracle.sysman.vtx.vtxOemApp.OemApp $APPLICATION “$2” “$3” “$4”
“$5” “$6” “$7” “$8” “$9”
else
java -DADMIN_WRL=$ADMIN_WRL -DORACLE_HOME=$ORACLE_HOME -DORBdisableLoca
tor=true -Djdbc.backward_compatible_to_816=true $JREOPTIONS_STRING -$CLASSPATH_Q
UAL $CLASSPATHADD oracle.sysman.vtx.vtxOemApp.OemApp $APPLICATION $2 $3 $4 $5 $6
$7 $8 $9
Fi

最后,是netca
bash-2.05$ vi netca
还是最后一段
# Run Net Configuration Assistant
cd $NETTOOLSDIR
$JRE -classpath $CLASSPATH oracle.net.ca.NetCA $*
exit $status

改成
# Run Net Configuration Assistant
cd $NETTOOLSDIR
java -classpath $CLASSPATH oracle.net.ca.NetCA $*
exit $status

OK,问题最终搞定,其他类似的问题可以类似解决!

如何,不是很复杂吧!

转载自:Linux上安装Oracle汉字乱码完整解决方案

尚无评论

发表评论

2024年四月
« 5月    
1234567
891011121314
15161718192021
22232425262728
2930