バッチ処理をJavaでコーディングしています.

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

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

OS:windowsxp
JDK:1.5
ORACLE:10g

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2009/08/25 22:15:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント23pt

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

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


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

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


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

id:yuchicome

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

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

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

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

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

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

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

2009/08/18 23:30:50
id:yofucasi No.2

回答回数102ベストアンサー獲得回数3

ポイント23pt

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

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

id:yuchicome

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

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

2009/08/18 23:29:09
id:yofucasi No.3

回答回数102ベストアンサー獲得回数3

ポイント22pt

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

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

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

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

id:pahoo No.4

回答回数5960ベストアンサー獲得回数633

ポイント22pt

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

あります。

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

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


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

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

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • http://q.hatena.ne.jp/1250601014 JDBC接続はよいのですが、コネクションプールができるタイプで接続したらよいと思います。コネクションプールを使わない場合は、「接続・切断を高速で繰り返し
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません