ヘッダーをスキップ

Oracle Databaseプラットフォーム共通日本語README
10g リリース2(10.2)
B19227-09
  目次
目次
 

戻る
戻る
次へ
次へ
 

Oracle JDBC Drivers README

原典情報: $ORACLE_HOME/relnotes/readmes/README_jdbc.txt



目次

このリリースの新機能

ドライバのバージョン

このリリースの内容

NLS拡張機能のjarファイル(クライアント側のみ)

インストール

環境の設定

JDBCドライバ使用時に役立つヒント

以前のoracle.jdbc.driverパッケージはまもなく廃止

Javaストアド・プロシージャ

既知の不具合

このリリースの既知の問題/制限事項


このリリースの新機能

J2SE 5.0のサポート

J2SE 5.0(J2SE 1.5およびTiger)が完全にサポートされています。5.0はJ2SE 1.4と同様にJDBC 3.0をサポートしているため、追加の標準JDBC機能はありません。以前のリリースでは、J2SE 5.0は公式にサポートされていませんでした。

orai18n.jarの重複したコピーが削除されました

10.1.0.1.0で、nls_charset12.jarは各国語キャラクタ・セットを提供するための新規ファイルorai18n.jarに置き換えられました。このファイルは[ORACLE_HOME]/jdbc/lib/に格納されていました。ただし、これは[ORACLE_HOME]/jlib/にある同じファイルのコピーでした。orai18n.jarはJDBCのみならずOracleの他の部分でも使用されるため、このファイルの正しい位置はjlibディレクトリです。このリリースでは、[ORACLE_HOME]/jdbc/libにある不要なコピーが削除されました。必要に応じて、CLASSPATHを更新して[ORACLE_HOME]/jlib/orai18n.jarを参照するようにしてください。

プロキシ認証

Oracle 10g リリース1(10.1)で、Thinドライバでのみサポートされていたプロキシ認証用の新規APIが導入されました。このリリースでは、このAPIのサポートがOCIドライバにも拡張されています。したがって、OCI固有のAPIのかわりに、共通のAPIを使用することをお薦めします。

JDBC 3.0機能

JDBC 3.0の全機能が完全にサポートされています。
自動生成されたキーがサポートされるようになりました。
CursorのHoldabilityメソッドで、SQLExceptionがスローされずに、正しい値が戻されるようになりました。CursorのHoldabilityに対する実際のrdbmsサポートに変更はありません。
ローカル・トランザクションとグローバル・トランザクションの切替えができます。

ランタイム接続のロード・バランシング

RCLBはRAC Load Balancer Advisoryとともに機能する新機能で、ロードおよびパフォーマンスのリアルタイム情報に基づいて接続を動的に割当てまたは再割当てします。

XA接続プーリング

Oracle JDBCはこれまで接続キャッシュをサポートしてきましたが、XA接続はサポート対象外でした。 Oracle 10gリリース2(10.2)では、ローカル接続と同様に、XA接続をキャッシュする機能が導入されています。

DMLのRETURNING句

優れた機能が実現しました。ここ数年、次のリリースでサポート予定とされてきたDMLのRETURNING句が、ThinドライバおよびOCIドライバでサポートされるようになりました。DMLのRETURNING句はSQL言語機能の1つで、SQL DMS文(INSERT、UPDATE、DELETE)で結果セットを戻すことができます。これは、トリガーまたは自動生成のキーによって変更された列を戻す場合に特に有効です。

行セット(JSR 114)

JSR 114では、行セットの重要な新機能が定義されています。oracle.jdbc.rowsetクラスは、JSR 114で定義された新機能を実装するように更新されました。

SSL

Secure Socket Layer(SSL)を介してrdbmsに接続する機能です。

ドライバのバージョン

リリース10.2.0.1.0には、次のドライバ・バージョンがあります。

JDBCThinドライバ10.2.0.1.0

クライアント・アプリケーション、中間層サーバーおよびアプレット用の100% Javaクライアント側JDBCドライバ。

JDBC OCIドライバ10.2.0.1.0

OCI 10.2.0.1.0がインストールされているマシン用のクライアント側JDBCドライバ。

サーバー側JDBCThinドライバ10.2.0.1.0

リモートOracleデータベースにアクセスするデータベース内のJavaプログラム用のJDBCドライバ。

サーバー側JDBC内部ドライバ10.2.0.1.0

Javaストアド・プロシージャ用のサーバー側JDBCドライバ。 このドライバはJDBC Kprbドライバと呼ばれていました。

詳細は、『Oracle Database JDBC開発者ガイドおよびリファレンス』を参照してください。

このリリースの内容

全プラットフォーム

[ORACLE_HOME]/jdbc/libには、次のファイルが含まれています。

classes12.jar

JDK 1.2およびJDK 1.3用のクラス。OracleのObject型およびCollection型によるNLSサポート用のクラスを除く、JDBCドライバ・クラスが含まれています。

classes12_g.jar

classes12.jarと同じですが、クラスはjavac -gを使用してコンパイル済で、一部のトレース情報が含まれています。

classes12dms.jar

classes12.jarと同じですが、Oracle Dynamic Monitoring Service(DMS)をサポートするための追加コードが含まれています。dms.jarCLASSPATHにある場合のみ使用できます。dms.jarは、最近のOracle Application Serverのリリースに含まれて提供されています。

classes12dms_g.jar

classes12dms.jarと同じですが、クラスはjavac -gを使用してコンパイル済で、一部のトレース情報が含まれています。

ojdbc14.jar

JDK 1.4およびJDK 5.0用のクラス。OracleのObject型およびCollection型によるNLSサポート用のクラスを除く、JDBCドライバ・クラスが含まれています。

ojdbc14_g.jar

ojdbc14.jarと同じですが、クラスはjavac -gを使用してコンパイル済で、一部のトレース情報が含まれています。

ojdbc14dms.jar

ojdbc14.jarと同じですが、Oracle Dynamic Monitoring Service(DMS)をサポートするための追加コードが含まれています。dms.jarCLASSPATHにある場合のみ使用できます。dms.jarは、最近のOracle Application Serverのリリースに含まれて提供されています。

ojdbc14dms_g.jar

ojdbc14dms.jarと同じですが、クラスはjavac -gを使用してコンパイル済で、一部のトレース情報が含まれています。

[ORACLE_HOME]/jdbc/doc/javadoc.tarには、Oracle JDBCのパブリック・クラスのパブリックAPIに関するJDBC Javadocが含まれています。

[ORACLE_HOME]/jdbc/demo/demo.tarには、JDBCのサンプル・プログラムが含まれています。

[ORACLE_HOME]/jlib/orai18n.jar

JDK 1.2、1.3、1.4および5.0用のNLSクラス。OracleのObject型とCollection型によるNLSサポート用のクラスが含まれています。

このjarファイルにより、古いnls_charset jar/zipファイルが置き換えられます。Oracle 10g リリース1(10.1)では、このファイルは[ORACLE_HOME]/jdbc/libにも重複して存在しました。この重複したコピーは削除されたため、前述の位置からこのファイルを取得する必要があります。

Windowsプラットフォームの場合

[ORACLE_HOME]\binディレクトリには、JDBC OCIドライバ用ライブラリocijdbc10.dllおよびheteroxa10.dllがあります。

Windows以外のプラットフォームの場合

[ORACLE_HOME]/libディレクトリには、JDBC OCIドライバ用の共有ライブラリlibocijdbc10.solibocijdbc10_g.solibheteroxa10.soおよびlibheteroxa10_g.soがあります。

NLS拡張機能のjarファイル(クライアント側のみ)

サーバー側内部JDBCドライバは完全なNLSサポートを提供します。
NLS拡張機能のjarファイルは不要です。この項の説明は、Oracle JDBCThinドライバとOracle JDBC OCIドライバにのみ適用されます。

基本のjarファイル(classes12.jarおよびojdbc14.jar)には、次のように完全なNLSサポートの提供に必要なクラスがすべて含まれています。

OracleのObject型またはCollection型のデータ・メンバーとして取得または挿入されないCHAR/VARCHAR/LONGVARCHAR/CLOB型データ用のOracleキャラクタ・セット。

共通に使用される少数のキャラクタ・セット用のObject型とCollection型のCHAR/VARCHARデータ・メンバーに対するNLSサポート。この種のキャラクタ・セットは、US7ASCIIWE8DECWE8ISO8859P1WE8MSWIN1252およびUTF8です。

Object型またはCollection型のCHAR/VARCHARデータ・メンバーに他のキャラクタ・セットを使用する必要がある場合は、CLASSPATHにNLS拡張機能のjarファイル([ORACLE_HOME]/jlib/orai18n.jar)を含める必要があります。新規のorai18n.jarにより、9i以前のリリースのnls_charset*.*ファイルが置き換えられます。

ファイルorai18n.jarには、文字に関連する重要なファイルが多く含まれています。
これらのほとんどのファイルは、グローバリゼーション・サポートのために必要です。アプリケーションで使用するキャラクタ・セット・ファイルのみを抽出するのではなく、次の3つの手順に従うことが最も安全です。

  1. orai18n.jarを一時ディレクトリに解凍します。

  2. アプリケーションで使用しないキャラクタ・セット・ファイルを削除します。地域ファイル、照合順番ファイルまたはマッピング・ファイルは削除しないでください。

  3. 一時ディレクトリで新しいorai18n.jarファイルを作成し、変更したファイルをCLASSPATHに追加します。

詳細は、JDBCの開発者ガイドを参照してください。

また、各国対応のJDBCエラー・メッセージ・ファイルを選択的に含めることもできます。メッセージ・ファイルは、classes12*.jarおよびojdbc14*.jar内のoracle/jdbc/driver/Messages_*.propertiesファイルに含まれています。


インストール

CLASSPATHには、Oracle JDBC Driversの複数バージョンを指定しないでください。Oracle Installerを実行すると、Oracle JDBC Driversが[ORACLE_HOME]/jdbcディレクトリにインストールされます。

環境の設定

Windowsプラットフォームの場合

JDK 1.2または1.3を使用する場合は、CLASSPATHに[ORACLE_HOME]\jdbc\lib\classes12.jarを追加します。JDK 1.4を使用する場合は、CLASSPATHに[ORACLE_HOME]\jdbc\lib\ojdbc14.jarを追加します。

必要な場合は、CLASSPATHに[ORACLE_HOME]\jlib\orai18n.jarを追加します。

JDBC OCIドライバを使用する場合は、PATHに[ORACLE_HOME]\binを追加します。

Solaris/HP Tru64 Unixの場合

JDK 1.2または1.3を使用する場合は、CLASSPATHに[ORACLE_HOME]/jdbc/lib/classes12.jarを追加します。JDK 1.4を使用する場合は、CLASSPATHに[ORACLE_HOME]/jdbc/lib/ojdbc14.jarを追加します。

必要な場合は、CLASSPATHに[ORACLE_HOME]/jlib/orai18n.jarを追加します。

JDBC OCIドライバを使用する場合は、LD_LIBRARY_PATHに[ORACLE_HOME]/jdbc/libを追加します。

HP/UXの場合

JDK 1.2または1.3を使用する場合は、CLASSPATHに[ORACLE_HOME]/jdbc/lib/classes12.jarを追加します。JDK 1.4を使用する場合は、CLASSPATHに[ORACLE_HOME]/jdbc/lib/ojdbc14.jarを追加します。

必要な場合は、CLASSPATHに[ORACLE_HOME]/jlib/orai18n.jarを追加します。

JDBC OCIドライバを使用する場合は、SHLIB_PATHおよびLD_LIBRARY_PATHに[ORACLE_HOME]/jdbc/libを追加します。

AIXの場合

JDK 1.2または1.3を使用する場合は、CLASSPATHに[ORACLE_HOME]/jdbc/lib/classes12.jarを追加します。JDK 1.4を使用する場合は、CLASSPATHに[ORACLE_HOME]/jdbc/lib/ojdbc14.jarを追加します。

必要な場合は、CLASSPATHに[ORACLE_HOME]/jlib/orai18n.jarを追加します。

JDBC OCIドライバを使用する場合は、LIBPATHおよびLD_LIBRARY_PATHに[ORACLE_HOME]/jdbc/libを追加します。

JDBCドライバ使用時に役立つヒント

Oracle JDBC Driversの使用方法の詳細は、『Oracle Database JDBC開発者ガイドおよびリファレンス』を参照してください。この項では、ヒントのみを説明します。これらのヒントは網羅的ではありません。

あくまでもJDBCプログラムで必要な事項です。

  1. JDBCを使用するプログラムに必要なJDBCクラスをインポートします。
    次に例を示します。

          import java.sql.*;
          import java.math.*; // if needed

    OracleDataSourceを使用するには、次のように入力する必要があります。

          import oracle.jdbc.pool.OracleDataSource;
  2. OracleDataSourceインスタンスを作成します。

          OracleDataSource ods = new OracleDataSource();
  3. デフォルトのプロパティを使用しない場合は、必要なプロパティを設定します。JDBCドライバごとに異なる接続URLを使用する必要があります。

          ods.setUser("my_user");
          ods.setPassword("my_password");

    JDBC OCIドライバの場合

    Bequeathed接続を確立するには、URLを次のように設定します。

          ods.setURL("jdbc:oracle:oci:@");

    リモート接続を確立するには、URLを次のように設定します。

          ods.setURL("jdbc:oracle:oci:@<database>");

    <database>は、TNSEntryNameまたはtnsnames.oraに定義されているSQL*Netの名前/値ペアです。

    JDBCThinドライバまたはサーバー側Thinドライバの場合

          ods.setURL("jdbc:oracle:thin:@<database>");

    <database>は、//<host>:<port>/<service_name>形式の文字列、SQL*Netの名前/値ペア、またはTNSEntryNameです。

    サーバー側JDBC内部ドライバの場合

          ods.setURL("jdbc:oracle:kprb:");

    後続の「:」が必要であることに注意してください。サーバー側内部ドライバを使用する場合は、常に実行中のデータベースに接続します。また、次のように指定できます。

          Connection conn = new oracle.jdbc.OracleDriver().defaultConnection();
  4. OracleDataSourceクラスに定義されているgetConnection()メソッドを使用して、データベースへの接続をオープンします。

          Connection conn = ods.getConnection();

以前のoracle.jdbc.driverパッケージはまもなく廃止

Oracle9i からは、JDBCへのOracleの拡張機能はoracle.jdbcパッケージで提供されます。このパッケージには、java.sql内のクラスとインタフェースでパブリックJDBC APIが指定されるのと同様の方法で、Oracleの拡張機能を指定するクラスとインタフェースが含まれています。

9i の初期バージョン以降は、oracle.jdbc.driverパッケージの使用が廃止されています。コードでは、かわりにoracle.jdbcパッケージを使用してください。Oracle9i 以降の新機能には、oracle.jdbc.driverパッケージの使用との互換性がありません。このリリースでは下位互換性を提供するために古いoracle.jdbc.driverパッケージも引き続きサポートされますが、このパッケージは最終的には次回のメジャー・リリースで削除されます。古いoracle.jdbc.driverパッケージを使用する既存のアプリケーションが残っている場合は、この時点でコードを変換してください。

ソース内でoracle.jdbc.driveroracle.jdbcで置き換えて再コンパイルするだけで、コードを変換できます。

この操作は、ピース単位では実行できません。アプリケーションで参照されるクラスとインタフェースをすべて変換する必要があります。

Javaストアド・プロシージャ

OracleのObjectを使用したコールインとインスタンス・メソッドの例は、次のファイルにあります。

[ORACLE_HOME]/javavm/demo/demo.zip

このファイルを解凍すると、次のディレクトリに例が抽出されます。

[ORACLE_HOME]/javavm/demo/examples/jsp

既知の不具合

Bug#3287202

JDBC XAでは、不要な場合でもDBトレース・ファイル出力が作成されます。

Bug#3320782

オブジェクト型のシノニムの場合、オブジェクト型の属性のメタデータが検出されません。つまり、JDBC StructDescriptorがオブジェクト型のシノニムを使用して作成された場合、オブジェクト型の属性の名前と型は検出されません。回避策は、メタデータを使用しないか、シノニムではなく実際の型名を使用します。

Bug#3349689

JDBCでは、XA接続がローカル・トランザクションに加わっていると誤って判断し、グローバル・トランザクションを開始しようとするとSQLExceptionがスローされます。回避策の1つは、自動コミットをtrueに設定することです。別の回避策としては、グローバル・トランザクションを開始する前にコミットをコールします。

Bug#3387352

ORDER BY句を使用して作成したスクロール可能な結果セットへの挿入操作時に、ORA-01732が発生します。これは、10g データベースでのみサポートされています。

Bug#3394713

PreparedStatementを使用してCALLブロックを実行すると、問題が発生します。CALLブロックにoutパラメータが含まれ、そのoutパラメータが登録されていないと、実行エラーが発生します。回避策は、CALLブロックをCallableStatementsを使用して実行し、outパラメータを登録することです。

Bug#3437870

接続を共有するスレッドでOracleOCIConnectionPoolの使用中に、Javaスレッドがデッドロックします。

Bug#3444231

SQL92関数{fn LOCATE()}が誤って処理されます。

Bug#3447988

メソッドOracleDataSource.getConnectionは同期化されたメソッドをコールするため、接続キャッシュが長時間ロックされることがあります。これは、接続を停止する際に主に発生する問題です。

Bug#3460477

SQLException: キャッシュされた行セットでgetIntVARCHAR列に対してコールすると、内部表現への変換が失敗します。

Bug#3479558

問合せのタイムアウトの期限切れ、またはStatement.cancelのコールによって、Thinドライバが停止します。

Bug#3488761

グローバル・トランザクション(XA起動)の開始後にOracleXAConnection.getConnection()をコールすると、SQLExceptionがスローされます。回避策は、グローバル・トランザクションを開始する前に接続を取得することです。

Bug#3571017

Statement.clearWarningsですべての警告が消去されません。

Bug#3598277

古い接続キャッシュOracleConnectionCacheImplを使用している場合、Statement.getConnectionは論理接続ではなく物理接続を戻します。

Bug#3624510

ScrollableResultセットのクローズ時にJava VMがデッドロックします。

Bug#3631763

日本語キャラクタ・セットの使用時に大きい文字列をバインドすると、ORA-01461が発生します。

Bug#3658525

スクロール可能な結果セットを生成するプリコンパイルされたSQL文にストリームをバインドしようとすると、StackOverflowErrorが発生します。

Bug#3663103

Calendar引数を指定してResultSet.getTimestampメソッドを使用すると、ドライバでタイムスタンプが秒に切り上げられます。

Bug#3676337

setStringの後、同じパラメータ位置に文字以外のデータのsetXXXがあると、誤ったデータが挿入されます。

Bug#3741829

UTF8文字列をJava文字列に変換すると、SQLExceptionではなくNullPointerExceptionが発生することがあります。

Bug#3759560

SQLDataインタフェースとネストされたサブタイプを使用するとき、深くネストされたサブタイプがNULLの場合、上位レベルのタイプがストアド・プロシージャに渡される際にNULLに設定される場合があります。

Bug#3762947

プライベート・シノニムの名前が付いたオブジェクト型を参照する際に、問題が発生します。ORA-01406またはORA-01436が発生します。

Bug#3899287

10g JDBCドライバを使用し、新機能のsetStringForClob()setExecuteBatch()/sendBatch()とともに使用して32KBを超えるCLOB/BLOBデータを挿入すると、次のエラーが発生します。

java.sql.SQLException: ORA-00600: 内部エラー・コード。

Bug#3906221

v8compatibilityフラグが設定されている場合、Timestamp値は日付としてバインドされます。setNull(Timestamp)では、NULLの日付値ではなくNULLのTimestamp値がバインドされます。

Bug#4288494

クローズされた文に対してexecuteBatchをコールすると、NullPointerExceptionが発生します。 回避策は、文を使用する前にisClosedをチェックすることです。

Bug#4365273

executeBatchをコールする場合、同じ文に対して前に実行されたコールでエラーが発生していた場合はNullPointerExceptionが発生します。この問題は、文キャッシュおよび高速接続フェイルオーバーの使用時に発生する場合があります。回避策は、executeBatchのコールを囲むcatchブロックでclearBatchをコールすることです。

このリリースの既知の問題/制限事項

次のリストに、既知の問題または制限事項を示します。

  • ScrollableResultSetでADTデータに対してgetSTRUCT()をコールすると、NullpointerExceptionが発生することがあります。

  • LONG列を含む表に1回のPreparedStatement.executeUpdate()のコールで8000バイトを超えるデータをバインドすると、ORA-22295エラーが発生することがあります。

  • クライアント側ドライバを使用して一度に16以上の接続をオープンしようとすると、プログラムが異常終了することがあります。これは、JDBCドライバによる制限事項ではありません。プロセスごとのファイル記述子数の制限を超えることが原因と思われます。この問題を解決するには、上限を高くします。

サーバー側内部ドライバには、次の制限事項があります。

  • LONG型とLONG RAW型は、PL/SQLプロシージャのパラメータが32512バイトに制限されます。

  • SQLExceptionが連鎖する場合は、最初のSQLExceptionでのみgetSQLState値が戻ります。

  • Oracle 8のObject、REFおよびCollectionデータ型を使用したバッチ更新はサポートされません。

Java Virtual Machineがグリーンスレッド・モードで動作している場合は、SSL接続上のJDBC OCIドライバが停止します。回避策は、Java Virtual Machineをネイティブ・スレッド・モードで実行することです。

日時書式、通貨記号および小数点記号は、常にアメリカの表記規則で表されます。


注意:

妥当な変換のほとんどは機能しますが、すべてが機能するとはかぎりません。 特に、新規LOBを作成する変換は機能しません。妥当と思われる変換が見つかっても機能しない場合は、オラクル社カスタマ・サポート・センターにTARを提供してください。


JSPのSystem.out.println()を標準出力にリダイレクトするために使用するdbms_java.set_outputまたはdbms_java.set_streamユーティリティは、JDBCトレースがオンになっているときには使用しないでください。これは、dbms_java.set_outputおよびset_streamの現行の実装では、出力を標準出力に書き込むためにJDBCが使用されるためです。この種のユーティリティを使用すると無限ループになります。

JDBC OCIドライバとJDBCThinドライバは、バイナリ・ストリームを介してCHARデータを正常に読み取りません。つまり、getBinaryStream()を使用してCHARデータを取得すると、正しい結果が得られないことがあります。回避策は、かわりにgetCHAR()またはgetAsciiStream()を使用することです。その他にgetUnicodeStream()を使用する方法もありますが、このメソッドは廃止になっています。

JavaおよびObject型で実装されるトリガーには制限があります。Javaメソッドとして実装されたトリガーは、Oracle 8のObject型またはCollection型のOUT引数を取ることができません。つまり、トリガーの実装に使用するJavaメソッドには、次の型の引数を使用できません。

  • java.sql.Struct
  • java.sql.Array
  • oracle.sql.STRUCT
  • oracle.sql.ARRAY
  • oracle.jdbc2.Struct
  • oracle.jdbc2.Array
  • oracle.jdbc2.SQLDataまたはoracle.sql.CustomDatumを実装するクラス

スクロール可能な結果セットの実装には、次の制限があります。

  • ScrollableResultSetに対するsetFetchDirection()は、何もしません。

  • crollableResultSetに対するrefreshRow()では、更新検出と同時実行性の組合せがすべてサポートされるわけではありません。次の表に、サポートされる組合せを示します。

    サポートタイプ同時実行性
    なしTYPE_FORWARD_ONLYCONCUR_READ_ONLY
    なしTYPE_FORWARD_ONLYCONCUR_UPDATABLE
    なしTYPE_SCROLL_INSENSITIVECONCUR_READ_ONLY
    ありTYPE_SCROLL_INSENSITIVECONCUR_UPDATABLE
    ありTYPE_SCROLL_SENSITIVECONCUR_READ_ONLY
    ありTYPE_SCROLL_SENSITIVECONCUR_UPDATABLE

AIX顧客がSSLを介してOIDを使用する場合は、[ORACLE_HOME]/jdbc/bin/にあるスクリプトfixJDBC-tm4ldaps.shを実行してclasses12.jarをパッチする必要があります。このスクリプトは、ネットワークのBug#3882238の修正に含まれています。

トリガーを作成する場合、PreparedStatementsの使用には制限があります。ドライバでは:fooをSQLパラメータとして認識するため、PreparedStatementの使用時に、トリガーを定義するSQLで:inおよび:outを使用できません。回避策は、かわりにStatementを使用することです。

Bug#2144602(リリース8.1.7以降)

JDBCドライバはZHT16DBTデータベース・キャラクタ・セットをサポートしていません。
ZHT16DBTからUnicodeなど他のキャラクタ・セットへのデータベース文字マッピングはありません。ASCII以外のすべての文字は置換文字に置き換えられます。この問題を回避するには、データベース・キャラクタ・セットをAL32UTF8などのUnicodeキャラクタ・セットに変更する必要があります。

Bug#2148328(リリース9.2.0以降)

Linuxの場合、表の名前に含まれるSJISデータは、ThinドライバでもOCIドライバでもJDKを使用して置換文字として戻されます。これはJDKの不具合によるものです。回避策として、JDK 1.3.1_09-b03を使用すると正常に動作します。JDK 1.4.2_02-b03では、この問題が発生します。

Bug#2183691

更新可能な結果セットに対してinsertRowメソッドを実行すると、行はデータベースに挿入されますが、結果セット自体には挿入されません。

Bug#3207391

nativeXAをtrueに設定してOracleXADataSourceを使用するとき、JDBC type2(OCIドライバ)はマルチスレッド環境で機能しません。OCIドライバは、OracleのC/XAライブラリを使用して分散トランザクションをサポートします。分散トランザクションでは、グローバル・トランザクションの再開前にスレッドごとにXAConnectionの取得が必要です。

Bug#3209390

JDBC OCIドライバのTAF機能は、JDBCの高速接続フェイルオーバーとともに使用すると機能しません。この問題は、TAFが有効な場合、TAFによって実際に検出されフェイルオーバーされた接続がJDBCの高速接続フェイルオーバーによって削除されるために発生します。回避策はありません。TAFと高速接続フェイルオーバーは一緒に使用できません。

Bug#3745560

close()メソッドを使用して明示的にクローズしていないJDBC接続は、OracleConnectionCacheImplに基づいてデータソースを使用しているとき、タイムアウト経過後に暗黙的にクローズされません。回避策は、新規の暗黙的な接続キャッシュを使用することです。

Bug#4176026

KPRBドライバは、データベースのLONG列から1MBのみ文字を取得する際に、余分に文字を取得します。この問題は、データベース・キャラクタ・セットがUTF8の場合に、OraclePreparedStatement.getCharacterStream()で発生します。

Bug#4307970

OracleDataSourceに対する特定のAPIでは、キャッシュ対応のデータソースのみが対象になります。OracleDataSourceがキャッシュ対応になるのは、OracleDataSourceに対してsetConnectionCachingEnabled APIがコールされた後のみです。

Bug#4325229

KPRBドライバは、32766以上の文字をデータベースのLONG列に挿入する場合、OraclePreparedStatement.setString()を使用します。データベース・キャラクタ・セットがZHT32TRISの場合は、データの切捨てが発生します。

Bug#4331919

JDBCの暗黙的な接続キャッシュは、HA条件の下でminLimitに対応していません。インスタンスが停止すると、影響を受ける接続はFCF DOWNイベント処理で削除され、接続キャッシュが最小制限の設定値を下回る場合は削除されます。これは正常な動作で、アプリケーションの接続要求が安定した状態になるに従って、接続数は増加します。

Bug#4390875

Thinドライバは、AL32UTF8のデータベースで、OracleResultSet.getString()の無効な文字に対してNullPointerExceoptionをスローします。

Bug#4393035

JDBCの暗黙的な接続キャッシュに関する問題です。Connection Cache Managerは、2つのモードをサポートするAPI refreshCacheをサポートしています。REFRESH_ALL_CONNECTIONSモードが指定されている場合は、チェックアウトされた接続を含めて、すべての接続がリフレッシュされるのが正しい動作です。現在は、キャッシュ内の使用可能な接続のみクローズおよび再作成されます。

Bug#4421171

インスタンスが停止後に起動された場合、JDBCの暗黙的な接続キャッシュによって接続のロード・バランシングはトリガーされません。この問題の影響は、再起動したインスタンスで新規接続が即時に作成されないことです。UPイベントのロード・バランシングには、次の2つの場合があります。

  1. インスタンス結合時のUPイベントのロード・バランシング

  2. インスタンス停止後のUPイベントのロード・バランシング

この問題は、(b)の場合にUPイベントのロード・バランシングの動作に影響します。この不具合に対応したパッチについては、OTNを確認してください。

Bug#4426152

KPRBドライバは、OraclePreparedStatement.setCharacterStream()で1MB以上のデータをデータベースのLONG列に挿入した場合、および1つの文で4KBをVARCHAR2列に挿入した場合に、ORA-01461をスローします。

Bug#6006898

JDBC OCIドライバがOCI FANの受信時にフェイルオーバーしません。