現象
日本語環境で、DBCAが文字化けしたため、以下の手順で解決後、
# whereis java java: /usr/bin/java /etc/java /usr/lib/java /usr/share/java /usr/share/man/man1/java.1.gz # 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 # cat dbca | grep JRE_DIR 69 JRE_DIR=/u01/app/oracle/product/11.2.0/dbhome_1/jdk/jre # vi dbca JRE_DIR=/u01/app/oracle/product/11.2.0/dbhome_1/jdk/jre ↓↓↓ JRE_DIR=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64/jre
DBCAを立ち上げると次の警告メッセージが出力される。
$ dbca OpenJDK 64-Bit Server VM warning: You have loaded library /u01/app/oracle/product/11.2.0/dbhome_1/lib/libnjni11.so which might have disabled stack guard. The VM will try to fix the stack guard now. It's highly recommended that you fix the library with 'execstack -c', or link it with '-z noexecstack'.
原因
「/u01/app/oracle/product/11.2.0/dbhome_1/lib/libnjni11.so」の実行スタックフラグが問題らしい。
対策
警告メッセージの通り、実行スタックフラグを変更するためのコマンドをインストールする。
yum install prelink
次の通り、該当する共有ライブラリを実行可能なスタックとしてフラグを変更する。
# execstack -c /u01/app/oracle/product/11.2.0/dbhome_1/lib/libnjni11.so # execstack -c /u01/app/oracle/product/11.2.0/dbhome_1/lib/libldapjclnt11.so # execstack -c /u01/app/oracle/product/11.2.0/dbhome_1/lib/libsrvmocr11.so
再度、DBCAツールを起動する。
$dbca
警告が表示されずに、dbcaツールが起動できることを確認する。