JavaからOracleデータベースに接続するバッチで去年度以下のような経験をしました。
その対処方法です。
発生するのはLinuxのみでWindowsだと起こりません。
現象
- Javaで作ったバッチを動かすと1回目はさらっと流れる。
- 2回目を動かすと、なんか起動にやたらと時間がかかる。
- 2回目以降、そもそも起動エラーになることもある。
- でも時間を置くと1度目に動かしたときと同じようにさらっと流れる。
原因
動いていない(ように見えている)箇所でスレッドダンプを取って出てきたクラスを
片っ端からGoogle検索に突っ込んで調べた結果、
ここのページに遭遇できました。
DBコネクション取得時にOracle JDBCドライバ内から呼び出しているSecureRandomクラスでのシード生成で時間がかかるらしいです。
バグレポートにも上がっていました。
対処方法
Javaの起動引数に以下を追加してあげればOK。
起動オプション
-Djava.security.egd=file:/dev/./urandom
2016/12/12追記
環境が書いてなかったですね、すみません。
環境
- OS : Redhat6.7
- Java : 1.8_45
- Oracle : 11g xe