問題タブ [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.
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 ドキュメントから:
私が試した解決策:
-Djava.security.egd=file:///dev/urandom
以下の Stackoverflow の説明で提案されているように、次のシステム プロパティを追加します。rng-tools をセットアップして、OS のエントロピー ジェネレーターを「支援」します。(リンクを参照)
次のコードは、ランダムなバイト配列を生成する問題なく実行されます (パラメーターに関係なく
-Djava.security.egd
:
int a = 10000;
while (a-- > 0){
byte[] array = new byte[2048];
new SecureRandom().nextBytes(array);
System.out.println(a);
}
上記のいずれもエラー (タイムアウト) を変更していないようです。
編集:新しい試み:
- アプリケーションを実行すると、ライブの問題を引き起こす正確なクエリを認識できました。これは、サイズが 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
java - ojdb6.jar から oto ojdbc7.jar をアップグレードしようとすると例外が発生する
tomcat/lib にある ojdb6.jar ファイルを ojdb7.jar に置き換えました。Tomcatをオンにして、使用しようとすると次のエラーが表示されます...
これが私が使用している接続プールの構成です....
何がこれを引き起こしているのでしょうか?Oracle データベース 11g を使用しています。
どんな助けでも大歓迎です。ojdb6.jar ファイルを元に戻し、ojdb7.jar ファイルを削除すると、すべて正常に動作します。
java - プログラムは決して終了しませんが、スレッドプールはシャットダウンすると主張しています
マルチスレッド プログラムで問題が発生しました。
ロックを使用せずに、同じフライトを同時に予約しようとする多くの人をシミュレートする必要があります。
そのため、ExecutorService を作成し、それを使用してスレッドをプールし、一度に多くの同時試行を実行できるようにしました。
ただし、問題は、プログラムが最後に到達し、すべての結果を出力する直前に、そこに座って永遠に実行されることです。データベースへの接続を利用する他のすべてのクラスにアクセスして、手動で閉じようとしました。運がない。
直後に実行されない残りのコードは次のとおりです。
問題を特定できますか?コードの実行が停止する場所にコメントを入れました。
sql - 複数のテーブルを使用して JDBC 接続でデータを取得する方法は?
こんにちはSQL
、複数のテーブルからデータを取得するクエリを作成しています。結果セットからデータを取得するにはrs.getString(1)
、対応するテーブルから行う必要がありますが、私にとってはデータは複数のテーブルから取得されます。
方法を教えていただけますか?
簡単に参照できるように、SQL
クエリを含めます
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オブジェクトにマッピングするのを手伝ってくれませんか。
jdbc - BoneCP vs WebLogic 独自の DB 接続プール
JDBC (ojdbc6.jar) と BoneCP を使用して Oracle DB に接続するサーブレットがあります。パッケージに BoneCP がなくても、BoneCP を使用するコードを WebLogic ですぐに使用できるものに移植する必要があります。
推奨されるアプローチは何ですか?具体的には、BoneCP と同等のものを取得するために使用できる WebLogic の機能は次のとおりです。
- パフォーマンス
- 失敗した SQL ステートメントをログに記録する機能
- 失われた DB 接続からの自動再開
前もって感謝します。