- - PR -
JDBCを使用したOracle接続
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-11-18 23:49
いつも勉強させて頂いています。
以下の環境でJDBC経由でOracleに接続して、開発を行っております。 また処理に関しては以下に概要を記述しています。 開発中にEclipseでブレイクポイントを設定してA〜Dのポイントで 途中中断ということを何度もしているとなぜか以下のような現象が発生します。 ・OracleサーバのCPU使用率が100%になる。 ・特定のテーブルのみ他システムからの参照を受け付けない。 (特定のテーブルとは開発中に使用しているテーブル) (このときのOracleの状態なのですが、ロックしている表はなくセッション数も1 or 2になっています。) この現象を回避する方法はないのでしょうか?? またACは同じResultSetを使用していますが、それもなんらかの悪影響を及ぼすのでしょうか? ・環境 Eclipse 3.0 Tomcat 4.1 Oracle 9i ・処理 @DB接続 ソース抜粋↓ ( Class.forName(DB_DRIVER); pri_cn = DriverManager.getConnection( DB_DSN , DB_USER , DB_PASS ); ) ASQL実行 B業務ロジック CSQL実行 D業務ロジック EDB CLOSE | ||||
|
投稿日時: 2005-11-22 11:09
紅茶と申します。
ロック、セッションに問題ないのであれば JDBCの問題ではないように思えます。 CPU使用率が100%というのはタスクマネージャーの情報でしょうか? Oracleのstatspackなり統計情報なりで分析してみることをお勧めします。 | ||||
|
投稿日時: 2005-11-22 15:05
中断→終了となったときリソースが
正しく開放されていないのではないでしょうか。 ResultSetやConnectionは確実にclose()していますか? | ||||
|
投稿日時: 2005-11-22 15:53
>途中中断ということを何度もしているとなぜか以下のような現象が発生します。
の一文を見逃していました。(汗) それであれば、vincentさんの書き込み通りのように思えますね。 | ||||
|
投稿日時: 2005-11-27 09:35
vincentさん、紅茶さん>
お返事遅くなり申し訳ございません。アドバイスありがとうございます。 通常ルーチンの場合は connectionをclose しております。 DBアクセスに関してはconnectionをcloseすると resultsetは自動的にDBとのセッション関係がなくなる という認識をもっていますが、間違いなのでしょうか? >紅茶さん >>CPU使用率が100%というのはタスクマネージャーの情報でしょうか? タスクマネージャーの情報になります。 statspackに関しては使用してなかったので、確認してみます。 | ||||
|
投稿日時: 2005-11-27 11:12
一般的にJDBCを使ったプログラムは
という形になります。 ちゃんと全部閉じないとJDBCの実装によっては,何かリソースを握ったままになる可能性があります。 |
1