読者です 読者をやめる 読者になる 読者になる

エンジニア成長日記

成長するにはインプットばかりでなく、アウトプットも必要である。日々の成長記録を書き留めていきたい。

OUI起動時にターミナルが文字化けする

環境

OS

$ cat /etc/redhat-release
CentOS release 6.7 (Final)

Database

Oracle Database 11g

環境設定

$ env | grep LANG
LANG=ja_JP.UTF-8

現象

Oracle 11gをインストールするため、OUI(Oracle Universal Installer)を起動した際に、ターミナルが文字化け(いわゆる□ 豆腐)が発生しました。

f:id:abcmark2010:20160110131614p:plain

原因

OUIは、Javaを利用しているため、Javaの実行環境「JREJava Runtime Edition)」が必要になります。 デフォルトでは、Oracle製品にバンドルされているJREを利用していますが、この「JRE」が、日本語環境にうまく対応していない(さざなみフォントがない)ため、日本語環境の設定(LANG=ja_JP.utf8)していると日本語文字が化けしてしまうようです。

対策

調べてみると対策方法としては、以下の方法がありました。

  • 英語表示でインストールしたい場合

    • 環境変数を英語表示(LANG=C)に一時的に切り替る。
  • 日本語表示でインストールしたい場合

    • Oracle製品にバンドルさているJREを、別のJREに置き換える。
    • Oracle製品にバンドルされているJREのフォントに、さざなみフォントを配置する。
    • さざなみフォントを別のフォント(IPAフォントなど)に置き換える。

手順

英語表示のインストール

英語表示でも問題ない場合は、環境変数を英語表示(LANG=C)に一時的に切り替る手順
  • 環境変数「LANG」に、「LANG=C」を設定する。
# export LANG=C
  • OUIを起動する。
# sh ./runInstaller
  • ターミナルが起動され、英語表示となっていることを確認する。

f:id:abcmark2010:20160110140101p:plain

日本語表示のインストール

日本語表示でインストールしたい場合は、Oracle製品にバンドルさているJRE以外のJREに置き換える手順です。
  • CentOS6のリポジトリから、Javaの環境をインストールする。(JREの環境がない場合のみ)
# yum -y install java
  • Javaのインストール先を調べる。
[root@oracle ~]# which java
/usr/bin/java
[root@oracle ~]# readlink -e /usr/bin/java
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64/jre/bin/java
  • OUI起動時に、バンドルされているJRE以外のJREを「-jreLoc」オプションで指定して起動する。
# sh ./runInstaller -jreLoc /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64/jre
  • ターミナルが起動され、日本語表示となっていることを確認する。

f:id:abcmark2010:20160110140123p:plain

Oracle製品にバンドルされているJREのフォントに、さざなみフォントを配置する手順
  • 以下のサイトより、さざなみフォント(sazanami-20040629.tar.bz2)をダウンロードします。

/10087/sazanami-20040629.tar.bz2をダウンロード - efont - OSDN

  • ダウンロードしたファイル(xvf sazanami-20040629.tar.bz2)を解凍します。
# tar xvf /tmp/sazanami-20040629.tar.bz2
sazanami-20040629/
sazanami-20040629/README
sazanami-20040629/sazanami-mincho.ttf
sazanami-20040629/sazanami-gothic.ttf
sazanami-20040629/doc/
sazanami-20040629/doc/oradano/
sazanami-20040629/doc/oradano/README.txt
sazanami-20040629/doc/misaki/
sazanami-20040629/doc/misaki/misakib8.txt
sazanami-20040629/doc/mplus/
sazanami-20040629/doc/mplus/LICENSE_J
sazanami-20040629/doc/shinonome/
sazanami-20040629/doc/shinonome/LICENSE
sazanami-20040629/doc/ayu/
sazanami-20040629/doc/ayu/README.txt
sazanami-20040629/doc/kappa/
sazanami-20040629/doc/kappa/README
  • OracleにバンドルされているJREのうち、「all.jar」ファイルを解凍する。
# unzip /u01/app/database/stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles/all.jar
  • 「all.jar」を解凍すると、「jdk」というディレクトリ配下に中身が展開される。
$ ll /u01/app/database/stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles/
合計 116172
-rwxr-xr-x. 1 oracle oinstall 118955623  8月 15 16:34 2009 all.jar
drwxr-xr-x. 6 oracle oinstall      4096  2月  2 06:04 2016 jdk    ★展開ファイル
  • Javaのフォント・フォールバックという仕組みを利用するため、「fallback」ディレクトリを作成する。
    ※フォント・フォールバック...システム環境にてフォントが存在しない場合、「fallback」ディレクトリ配下のフォトンを参照する仕組み。
# mkdir /u01/app/database/stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles/jdk/jre/lib/fonts/fallback
  • 作成した「fallback」ディレクトリ配下に、さざなみフォント(sazanami-mincho.ttf、sazanami-gothic.ttf)を配置する。
# cp /tmp/sazanami-20040629/sazanami-* /u01/app/database/stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles/jdk/jre/lib/fonts/fallback
  • 元々配置されていた「all.jar」ファイルを任意のフォルダへ退避する。
# mv /u01/app/database/stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles/all.jar /backup/.
  • 展開された「jdk」から「all.jar」を再圧縮する。
# zip -r /u01/app/database/stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles/all.jar /u01/app/database/stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles/jdk

参考サイト

OUIでの日本語の文字化けへの対処例 (コーソル DatabaseエンジニアのBlog)

Yellow_Camelのブログ : Oracleインストーラーの文字化け対応(CentOS6/Oracle11g)

Oracle11gR2(RHEL6)のインストール文字化け - tkoshima.net

仮想化雑記帳: [余談] CentOS 6.x で Oracle のインストーラで文字化けをさせず日本語でインストールする