エンジニア成長日記

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

OpenJDK 64-Bit Server VM warning

f:id:abcmark2010:20160122233643j:plain

現象

日本語環境で、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

f:id:abcmark2010:20160120233508j:plain

警告が表示されずに、dbcaツールが起動できることを確認する。

参考サイト

linux.die.net