問題タブ [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.
database - JBoss AS 7 での Oracle データベースのパフォーマンスの問題
皆さん、JBoss AS 5 で実行されているアプリケーションを JBoss AS 7 に移行することに積極的に取り組んでいます。
移行後、データベース呼び出しのパフォーマンスが大幅に低下していることに気付きました。
JBoss 5 でプール (最小 - 5 最大 - 100) で ojdbc14 を使用していましたが、かなりうまく機能していました。
JBoss AS 7 では、ドライバーをモジュールとしてインストールしました。
すべてのクエリに 10 倍の時間がかかっています。たとえば、JBoss AS 5 でクエリに 30 ミリ秒かかった場合、JBoss AS 7 では 400 ~ 600 ミリ秒かかっています。
以下の構成に示されている両方のドライバーで試しました(ojdbc6、ojdbc14)
観察によると、パフォーマンスの低下は、OS X ボックスよりも Linux ボックス マシンの方が顕著です。
ご参考までに。Java 1.6 と 1.7 の両方で JBoss AS 7 を実行してみました
私のアプリケーション自体には以下が含まれています:
- struts 2 フロントエンド (リクエスト処理に使用され、Web UI は関係ありません)
- バックエンドのセッション Bean
- バッチジョブ用の QuartzPlugin。
- カスタム MBean
私が試してみました
- プールサイズの増減
- prefill = true および false
- ojdbc6 と ojdbc14 の切り替え
スタンドアロン.xml
java - Oracle NUMBER タイプの jdbc 準備済みステートメント
Orcale データベースへの jdbc 接続を設定する Java アプリケーションがあります。データベースにデータを挿入しようとしていますが、Oracle NUMBER タイプに関して混乱しています。テーブルには、それぞれこれらのタイプの 3 つの列があります。
私の最初の質問は、データをプリペアドステートメントで使用するために、どのタイプの Java タイプにデータを入れるべきかということです。
2 番目の質問は、データを挿入するためにプリペアド ステートメントで使用できるセット操作です。
NUMBER(38,0) を扱っていると仮定しましょう。Java 型を BigInteger に設定しますか? 私が整数1を持っていたら、それは
次に、私の PreparedStatement では、次のようになります
これはうまくいかないようですので、これは正しくないと思います。どんな助けでも大歓迎です。
java - Java から OracleDB への接続が非常に遅い (ojdbc6.jar および Linux を使用)
ORACLE データベース (10g) に接続する Web サービスをデプロイしようとしています。
現在、私は-CentOS 6.4 64ビット-JDK 1.7.0_25を搭載したApache Tomcat 7.0.42-Ojdbc6.jarを持っています
Windows で同じバージョンの tomcat を使用して Web サービスを呼び出す場合。正常に動作しています (0.1 ~ 0.5 秒/トランザクション)。
残念ながら、CentOSサーバーで呼び出そうとすると、非常に遅くなります(トランザクションあたり10〜20秒)
ライブラリはOS以外はまったく同じで、catalina.outを監視しているのでエラーはありませんが、dbCreateConnection()を実行すると遅いです)
アドバイスをください。
ありがとう :\
参考までに、データベースセクションのコードは次のとおりです。
java - ojdbc14.jar および ojdbc6.jar の OracleResultSet クラス
ojdbc14.jarのプログラムでoracle.jdbc.driver.OracleResultSetクラスを使用しました。その後、Oracle 10g を 11g にアップグレードし、これからはojdbc6.jarを使用しています。
この新しい jar ファイルを使用すると、コンパイル エラー"oracle.jdbc.driver.OracleResultSet is not visible" が表示されます。両方のjarファイルから「jar xf xxx.jar」を使用してクラスファイルを抽出し、OracleResultSetクラスのクラスファイルを取得して逆コンパイルし、Javaコードを取得しました。OracleResultSet は ojdbc14.jar のパブリック クラスですが、ojdbc6.jar には「OracleResultSet」クラスの使用を制限するアクセス修飾子がないことがわかりました。
この問題の解決策はありますか?
java - P6Spy が SQL をログに記録しない
準備済みステートメントを使用してデータベース内のテーブルを更新するプログラムがあり、実装されているすべての SQL ステートメントの出力を確認しようとしています。
私の調査では、見栄えの良いP6Spyが示唆されました。ダウンロードし、ライブラリにP6Spy.jarを依存関係として追加し、spy.propertiesファイルに変更して、Oracleドライバーをリアルドライバーとして使用するように接続し、spy.propertiesをクラスパスに追加しました、そして私のコードでドライバーを「com.p6spy.engine.spy.P6SpyDriver」に変更しました。
それはすべて機能し、spy.log ファイルが生成されますが、SQL ステートメントは含まれていません。代わりに、spy.log ファイルの出力は次のようになります。
P6Spyを使用した経験があり、問題が何であるかを知っている人はいますか? 私が行ったすべてのことを実行してプログラムを実行した後、spy.logはSQLステートメントを生成するだけであると読んだので、ここでかなり混乱しています
編集-- ちなみにデータベースは更新されたので、SQL ステートメントが実行され、データベースが更新されました。
java - JavaがOracleにメッセージを送信するとき
Java 呼び出しが Oracle または同様の RDBMS に対して行われた場合、Java はどのようにして Oracle アクションが完了したことを認識しますか?
たとえば、「create table as (select * from table1)
」。
Java を介して Oracle でその 1 行の SQL ステートメントを実行すると、Java はどのようにしてコード行が完了したことを認識し、次の Java 命令に進むのでしょうか? 私の推測では、秘密の JDBC が進行中ですが、それが何であるかはわかりません。
誰か説明できますか?
Java でそのコード行を実行するのに必要な時間を調整できることを願っています。ResultSet オブジェクトを元に戻したくなく、代わりにある種の確認が必要な場合は、何かを微調整できます。
java - JPAを使用してOracleにBigDecimal 0.000を格納することは可能ですか?
JPA エンティティに次のプロパティがあります。
信頼度が「0.000」に設定されている場合、例: setConfidence(new BigDecimal("0.000")); その後、エンティティがデータベースに永続化され、データベースからフェッチされます。フェッチされた値は精度とスケールを失い、単純に 0 になります。
データベース スキーマは、Web アプリケーションのデプロイ時に JPA/Eclipselink によって作成されます。
私の環境はEclipseLink 2.3.2.v20111125-r10461、Oracle 11g R2、Oracle JDBCシンドライバーOJDBC 1.6です。
java - Mybatis と ojdbc14.jar のパラメーターに null を設定する際のエラー
パラメータを null に設定するとエラーが発生します。
この問題は、ojdbc14.jar の使用中にのみ発生します。ojdbc6.jar を使用する場合は問題ありません。
この設定は mybatis 構成 xml にあります
エラーメッセージは次のとおりです。
xmlのSQLは
それを呼び出すJavaは
質問は:
それは ojdbc14.jar の問題ですか? もしそうなら、なぜですか?
#{elementName, jdbcType=VARCHAR2} を使用して解決できることはわかっていますが、私のプロジェクトにはこの問題がたくさんあり、間もなく期限が切れます。それらすべてを変更したくありません。
java - Java から呼び出されたパイプライン関数から PL/SQL エラーをキャッチする方法
Oracle(11g) ベースのアプリケーションでは、パイプライン関数を多用しています。以下の (簡略化された) 例に示すように、このような関数からのエラー報告は難しいことがわかりました。プロシージャは Java から呼び出されるように存在し、PL/SQL の実行中にどこかで発生したエラーを受け取ります。
オラクルの部分:
上記の関数を実行すると、例外が表示されます。
ORA-00904: "WRONG_COLUMN": invalid column name
Java 部分:
例外はキャッチされません。結果セットが空です。
これは予想される動作ですか?私たちは何か間違ったことをしていますか?回避策はありますか?