問題タブ [ojdbc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
7499 参照

oracle - ubuntuでのJDBCおよびOracle 11g接続のリセット

JDBC を Oracle 11g に接続するという奇妙な問題が発生しています。私やチームが認識していた設定の変更なしに、今週の月曜日に突然発生し始めました. Stackoverflow および Oracle フォーラム (下部のリンクを参照) を読んで、Linux 64 ビット マシンでのランダム バイトの生成に問題があることを知りました。いくつかのことを試してみましたが、残念ながらうまくいきませんでした。ここに私が知っているすべての情報をまとめます。

奇妙なことに、sqlplus を使用して端末経由で接続できますが、JDBC を使用することはできません。

アイデアや助けをありがとう、

アミット

私のセットアップ:

JDBC マニフェスト:

odbc7.jar:

odbc6.jar:

金曜日には、すべてがまだ機能していました。

  • アプリケーションを起動して、Oracle DB への Java 接続を確立できました。
  • 月曜日以来、私はこの問題を抱えています
  • 私の古いコンピューター(Ubuntu 12.04)も、動作状態のままにしていたにもかかわらず、ほぼ1週間触れていなかったので、この問題も発生し始めました。

SQLPLUS を使用した端末接続が機能しています:

amit@mymachine:/usr/lib/oracle$ sqlplus /@DB_HOST_IP:1521/DB_NAME

SQL*Plus: 2014 年 4 月 22 日火曜日 11:35:58 に 12.1.0.1.0 をリリース

著作権 (c) 1982 年、2013 年、オラクル。全著作権所有。

接続先: Oracle Database 11g リリース 11.2.0.3.0 - 64 ビット製品

SQL>

しかし、JDBC との接続は失敗しています:

約 20 秒間ハングアップし、次をスローします。

サーバーのログから:

両方のサーバー エラーに関する Oracle ドキュメントから:

私が試した解決策:

  1. -Djava.security.egd=file:///dev/urandom以下の Stackoverflow の説明で提案されているように、次のシステム プロパティを追加します。
  2. rng-tools をセットアップして、OS のエントロピー ジェネレーターを「支援」します。(リンクを参照)

  3. 次のコードは、ランダムなバイト配列を生成する問題なく実行されます (パラメーターに関係なく-Djava.security.egd:

int a = 10000; while (a-- > 0){ byte[] array = new byte[2048]; new SecureRandom().nextBytes(array); System.out.println(a); }

上記のいずれもエラー (タイムアウト) を変更していないようです。

編集:新しい試み:

  1. アプリケーションを実行すると、ライブの問題を引き起こす正確なクエリを認識できました。これは、サイズが 1 ~ 2kb の CLOG 列を読み取る場合です。

SQL> select secure_params from session_token where id=11065073;<- クエリがスタックしています。

クライアントを再起動し、

この特定の行でこのフィールドをますます更新すると、サイズが 429 文字の場合でもフィールドを読み取ることができましたが、これを 587 文字に増やしたときに再びスタックしました。

SQL> select secure_params from session_token where id=11065073;<- クエリが再びスタックしました。

アプリケーションは最初の接続を作成し、DB から短いデータを取得できますが、結果セットが少し太くなったときにのみ失敗するため、試行番号 4 から、ここに追加の問題がある可能性があると思います。

編集の終わり

リンク:

Stackoverflow: Oracle JDBC の断続的な接続の問題

Rng エントロピー ジェネレーター: http://www.howtoforge.com/helping-the-random-number-generator-to-gain-enough-entropy-with-rng-tools-debian-lenny

0 投票する
1 に答える
2690 参照

java - ojdb6.jar から oto ojdbc7.jar をアップグレードしようとすると例外が発生する

tomcat/lib にある ojdb6.jar ファイルを ojdb7.jar に置き換えました。Tomcatをオンにして、使用しようとすると次のエラーが表示されます...

これが私が使用している接続プールの構成です....

何がこれを引き起こしているのでしょうか?Oracle データベース 11g を使用しています。

どんな助けでも大歓迎です。ojdb6.jar ファイルを元に戻し、ojdb7.jar ファイルを削除すると、すべて正常に動作します。

0 投票する
4 に答える
230 参照

java - プログラムは決して終了しませんが、スレッドプールはシャットダウンすると主張しています

マルチスレッド プログラムで問題が発生しました。

ロックを使用せずに、同じフライトを同時に予約しようとする多くの人をシミュレートする必要があります。

そのため、ExecutorService を作成し、それを使用してスレッドをプールし、一度に多くの同時試行を実行できるようにしました。

ただし、問題は、プログラムが最後に到達し、すべての結果を出力する直前に、そこに座って永遠に実行されることです。データベースへの接続を利用する他のすべてのクラスにアクセスして、手動で閉じようとしました。運がない。

直後に実行されない残りのコードは次のとおりです。

問題を特定できますか?コードの実行が停止する場所にコメントを入れました。

0 投票する
1 に答える
1746 参照

sql - 複数のテーブルを使用して JDBC 接続でデータを取得する方法は?

こんにちはSQL、複数のテーブルからデータを取得するクエリを作成しています。結果セットからデータを取得するにはrs.getString(1)、対応するテーブルから行う必要がありますが、私にとってはデータは複数のテーブルから取得されます。

方法を教えていただけますか?

簡単に参照できるように、SQLクエリを含めます

0 投票する
0 に答える
1061 参照

java - Spring ストアド プロシージャでカスタム オブジェクトのパラメーターを宣言します。

カスタム オブジェクトとして IN OUT パラメータを使用した以下のストアド プロシージャがあります。プロシージャから返されたデータを取得し、Spring ストアド プロシージャを使用して Java オブジェクトにマップしたいと考えています。

ストアド プロシージャのパラメータ:

手順 get_prev_record ( p_curr_rec_i SCRUM.employee_ot, p_prev_rec_io IN OUT SCRUM.employee_ot)

オブジェクト型宣言:

CREATE OR REPLACE TYPE CORE.EMPLOYEE_OT AS OBJECT (SCRUM.EMPLOYEE_ID NUMBER (18), SCRUM.EMPLOYEE_NAME VARCHAR2 (30));

従来のストアド プロシージャを使用して、以下のパラメーターを定義します。

Spring ストアド プロシージャ パラメータ:

declareParameter(new SqlParameter("p_curr_rec_i",OracleTypes.STRUCT,"SCRUM.EMPLOYEE_OT"));

declareParameter(new SqlOutParameter("p_prev_rec_io",OracleTypes.STRUCT,"SCRUM.EMPLOYEE_OT",new SqlReturnStruct(Employee.class) ));

しかし、出力はDBから値を返していません。SqlOutParameter を SqlInOutParameter に変更すると、以下のエラーが発生します。

「1 つのパラメーターが指定されましたが、2 つの in パラメーターがクラスで宣言されました」

出力データをJavaオブジェクトにマッピングするのを手伝ってくれませんか。

0 投票する
1 に答える
354 参照

jdbc - BoneCP vs WebLogic 独自の DB 接続プール

JDBC (ojdbc6.jar) と BoneCP を使用して Oracle DB に接続するサーブレットがあります。パッケージに BoneCP がなくても、BoneCP を使用するコードを WebLogic ですぐに使用できるものに移植する必要があります。

推奨されるアプローチは何ですか?具体的には、BoneCP と同等のものを取得するために使用できる WebLogic の機能は次のとおりです。

  • パフォーマンス
  • 失敗した SQL ステートメントをログに記録する機能
  • 失われた DB 接続からの自動再開

前もって感謝します。