人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

バッチ処理をJavaでコーディングしています.
一件処理するごとに,JDBC接続でデータベース(ORACLE)にコネクション確立,切断を繰り返しているのですが
一定件数を処理した後,oracleのコネクションが切断され,ORA-12519が発生します.

個人的な見解としては,接続・切断を高速で繰り返しているため接続が不安定になっているものと考えています.
下記が実行環境です.

OS:windowsxp
JDK:1.5
ORACLE:10g

テスト環境のため
コネクションプールは使用していません.


●質問者: yuchicome
●カテゴリ:コンピュータ
✍キーワード:10g Java JDBC JDK Oracle
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● pahoo
●23ポイント

ご質問の主旨は何でしょうか?

ORA-12519 エラーの原因と対策をご質問でしょうか?


エラー・ログも無いので状況がまったく掴めませんが、java側で切断プロセスが完了しないうちに次の接続を行っていないでしょうか?

もしそうであれば、PROCESSES 数を増やしてみて下さい。


ところで、本番環境で1件処理毎にコネクション接続/切断を行うということはしませんよね?

◎質問者からの返答

ご回答ありがとうございます。

質問の趣旨なのですが、シンプルにいうとソース上で、コネクション確立→コネクションクローズの順で行われていても、コネクションクローズ中に次のコネクション確立に入る場合があるのかどうかを知りたいのです。ちなみにローカル環境でメインメソッドから起動しているだけなので、シングルクライアントです。

コネクションクローズが完了するまで、次のコネクション確立を待つものを思っていたのですが・・

>>もしそうであれば、PROCESSES 数を増やしてみて下さい。

既存システムですでに使用されているDBなので環境の操作は最後の手段にしたいところなので、最後の手段にしています。

>>ところで、本番環境で1件処理毎にコネクション接続/切断を行うということはしませんよね?

本番環境ではデータソースを使用してコネクションプーリングするので問題なしかと思っていたのですが、問題ありありですか???


2 ● yofucasi
●23ポイント

http://d.hatena.ne.jp/yofucasi/20090818/1250602316

Javaなので、切断する命令を書いても実際にはすぐには切断されないので、高速に接続・切断をすると不安定になると思います。

◎質問者からの返答

ご回答ありがとうございます。

上にも書きましたが、完全に切断される前に、次のコネクション確立が始まることがあるということでしょうか?


3 ● yofucasi
●22ポイント

>上にも書きましたが、完全に切断される前に、次のコネクション確立が始まることがあるということでしょうか?

ありえないとはいえません。だから、コネクションプールなどを使って、短期間に確立・切断が起こらないようにするのが一番の

解決策かと。コネクションプールのパラメータの調整がうまくできないと、同じ現象が起こることがあります。

http://d.hatena.ne.jp/yofucasi/20090818/1250626895


4 ● pahoo
●22ポイント

コネクションクローズ中に次のコネクション確立に入る場合がある

あります。

このため、PROCESSES 数を増やしてみてくださいと回答しました。

それができないのであれば、オーソドックスに COMMIT 処理すべきです。


また、いちいち接続/切断を繰り返したのでは RDBMS に負荷がかかりますので、その意味でもオーソドックスな処理をお勧めします。

コネクション・プーリングでは、プーリングを行うために十分なリソース(プロセスとメモリ)を用意しておかなければならないので、パラメータが変更できない状況では、オーソドックスなアルゴリズムを使うのが無難です。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ