Oracle Databaseプラットフォーム共通日本語README 10g リリース2(10.2) B19227-09 |
|
戻る |
次へ |
原典情報: $ORACLE_HOME/relnotes/readmes/README_jdbc.txt
目次
以前のoracle.jdbc.driverパッケージはまもなく廃止
J2SE 5.0(J2SE 1.5およびTiger)が完全にサポートされています。5.0はJ2SE 1.4と同様にJDBC 3.0をサポートしているため、追加の標準JDBC機能はありません。以前のリリースでは、J2SE 5.0は公式にサポートされていませんでした。
10.1.0.1.0で、nls_charset12.jar
は各国語キャラクタ・セットを提供するための新規ファイルorai18n.jar
に置き換えられました。このファイルは[ORACLE_HOME]/jdbc/lib/
に格納されていました。ただし、これは[ORACLE_HOME]/jlib/
にある同じファイルのコピーでした。orai18n.jar
はJDBCのみならずOracleの他の部分でも使用されるため、このファイルの正しい位置はjlibディレクトリです。このリリースでは、[ORACLE_HOME]/jlib/orai18n.jar
を参照するようにしてください。
Oracle 10g リリース1(10.1)で、Thinドライバでのみサポートされていたプロキシ認証用の新規APIが導入されました。このリリースでは、このAPIのサポートがOCIドライバにも拡張されています。したがって、OCI固有のAPIのかわりに、共通のAPIを使用することをお薦めします。
JDBC 3.0の全機能が完全にサポートされています。
自動生成されたキーがサポートされるようになりました。
CursorのHoldability
メソッドで、SQLException
がスローされずに、正しい値が戻されるようになりました。CursorのHoldability
に対する実際のrdbmsサポートに変更はありません。
ローカル・トランザクションとグローバル・トランザクションの切替えができます。
RCLBはRAC Load Balancer Advisoryとともに機能する新機能で、ロードおよびパフォーマンスのリアルタイム情報に基づいて接続を動的に割当てまたは再割当てします。
Oracle JDBCはこれまで接続キャッシュをサポートしてきましたが、XA接続はサポート対象外でした。 Oracle 10gリリース2(10.2)では、ローカル接続と同様に、XA接続をキャッシュする機能が導入されています。
優れた機能が実現しました。ここ数年、次のリリースでサポート予定とされてきたDMLのRETURNING句が、ThinドライバおよびOCIドライバでサポートされるようになりました。DMLのRETURNING句はSQL言語機能の1つで、SQL DMS文(INSERT、UPDATE、DELETE)で結果セットを戻すことができます。これは、トリガーまたは自動生成のキーによって変更された列を戻す場合に特に有効です。
JSR 114では、行セットの重要な新機能が定義されています。oracle.jdbc.rowset
クラスは、JSR 114で定義された新機能を実装するように更新されました。
Secure Socket Layer(SSL)を介してrdbmsに接続する機能です。
リリース10.2.0.1.0には、次のドライバ・バージョンがあります。
クライアント・アプリケーション、中間層サーバーおよびアプレット用の100% Javaクライアント側JDBCドライバ。
OCI 10.2.0.1.0がインストールされているマシン用のクライアント側JDBCドライバ。
リモートOracleデータベースにアクセスするデータベース内のJavaプログラム用のJDBCドライバ。
Javaストアド・プロシージャ用のサーバー側JDBCドライバ。 このドライバはJDBC Kprbドライバと呼ばれていました。
詳細は、『Oracle Database JDBC開発者ガイドおよびリファレンス』を参照してください。
[ORACLE_HOME]/jdbc/lib
には、次のファイルが含まれています。
JDK 1.2およびJDK 1.3用のクラス。OracleのObject
型およびCollection
型によるNLSサポート用のクラスを除く、JDBCドライバ・クラスが含まれています。
classes12.jar
と同じですが、クラスはjavac -gを使用してコンパイル済で、一部のトレース情報が含まれています。
classes12.jar
と同じですが、Oracle Dynamic Monitoring Service(DMS)をサポートするための追加コードが含まれています。dms.jar
がCLASSPATH
にある場合のみ使用できます。dms.jar
は、最近のOracle Application Serverのリリースに含まれて提供されています。
classes12dms.jar
と同じですが、クラスはjavac -gを使用してコンパイル済で、一部のトレース情報が含まれています。
JDK 1.4およびJDK 5.0用のクラス。OracleのObject
型およびCollection
型によるNLSサポート用のクラスを除く、JDBCドライバ・クラスが含まれています。
ojdbc14.jar
と同じですが、クラスはjavac -gを使用してコンパイル済で、一部のトレース情報が含まれています。
ojdbc14.jar
と同じですが、Oracle Dynamic Monitoring Service(DMS)をサポートするための追加コードが含まれています。dms.jar
がCLASSPATH
にある場合のみ使用できます。dms.jar
は、最近のOracle Application Serverのリリースに含まれて提供されています。
ojdbc14dms.jar
と同じですが、クラスはjavac -gを使用してコンパイル済で、一部のトレース情報が含まれています。
[ORACLE_HOME]/jdbc/doc/javadoc.tar
には、Oracle JDBCのパブリック・クラスのパブリックAPIに関するJDBC Javadocが含まれています。
[ORACLE_HOME]/jdbc/demo/demo.tar
には、JDBCのサンプル・プログラムが含まれています。
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
にも重複して存在しました。この重複したコピーは削除されたため、前述の位置からこのファイルを取得する必要があります。
[ORACLE_HOME]\bin
ディレクトリには、JDBC OCIドライバ用ライブラリocijdbc10.dll
およびheteroxa10.dll
があります。
[ORACLE_HOME]/lib
ディレクトリには、JDBC OCIドライバ用の共有ライブラリlibocijdbc10.so
、libocijdbc10_g.so
、libheteroxa10.so
およびlibheteroxa10_g.so
があります。
サーバー側内部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サポート。この種のキャラクタ・セットは、US7ASCII
、WE8DEC
、WE8ISO8859P1
、WE8MSWIN1252
およびUTF8
です。
Object
型またはCollection
型のCHAR/VARCHAR
データ・メンバーに他のキャラクタ・セットを使用する必要がある場合は、CLASSPATH
にNLS拡張機能のjarファイル([ORACLE_HOME]/jlib/orai18n.jar
)を含める必要があります。新規のorai18n.jar
により、9i以前のリリースのnls_charset*.*
ファイルが置き換えられます。
ファイルorai18n.jar
には、文字に関連する重要なファイルが多く含まれています。
これらのほとんどのファイルは、グローバリゼーション・サポートのために必要です。アプリケーションで使用するキャラクタ・セット・ファイルのみを抽出するのではなく、次の3つの手順に従うことが最も安全です。
orai18n.jar
を一時ディレクトリに解凍します。
アプリケーションで使用しないキャラクタ・セット・ファイルを削除します。地域ファイル、照合順番ファイルまたはマッピング・ファイルは削除しないでください。
一時ディレクトリで新しい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
ディレクトリにインストールされます。
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
を追加します。
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
を追加します。
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
を追加します。
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
を追加します。
Oracle JDBC Driversの使用方法の詳細は、『Oracle Database JDBC開発者ガイドおよびリファレンス』を参照してください。この項では、ヒントのみを説明します。これらのヒントは網羅的ではありません。
あくまでもJDBCプログラムで必要な事項です。
JDBCを使用するプログラムに必要なJDBCクラスをインポートします。
次に例を示します。
import java.sql.*; import java.math.*; // if needed
OracleDataSourceを使用するには、次のように入力する必要があります。
import oracle.jdbc.pool.OracleDataSource;
OracleDataSourceインスタンスを作成します。
OracleDataSource ods = new OracleDataSource();
デフォルトのプロパティを使用しない場合は、必要なプロパティを設定します。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();
OracleDataSourceクラスに定義されているgetConnection()
メソッドを使用して、データベースへの接続をオープンします。
Connection conn = ods.getConnection();
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.driver
をoracle.jdbc
で置き換えて再コンパイルするだけで、コードを変換できます。
この操作は、ピース単位では実行できません。アプリケーションで参照されるクラスとインタフェースをすべて変換する必要があります。
OracleのObjectを使用したコールインとインスタンス・メソッドの例は、次のファイルにあります。
[ORACLE_HOME]/javavm/demo/demo.zip
このファイルを解凍すると、次のディレクトリに例が抽出されます。
[ORACLE_HOME]/javavm/demo/examples/jsp
JDBC XAでは、不要な場合でもDBトレース・ファイル出力が作成されます。
オブジェクト型のシノニムの場合、オブジェクト型の属性のメタデータが検出されません。つまり、JDBC StructDescriptor
がオブジェクト型のシノニムを使用して作成された場合、オブジェクト型の属性の名前と型は検出されません。回避策は、メタデータを使用しないか、シノニムではなく実際の型名を使用します。
JDBCでは、XA接続がローカル・トランザクションに加わっていると誤って判断し、グローバル・トランザクションを開始しようとするとSQLException
がスローされます。回避策の1つは、自動コミットをtrueに設定することです。別の回避策としては、グローバル・トランザクションを開始する前にコミットをコールします。
ORDER BY句を使用して作成したスクロール可能な結果セットへの挿入操作時に、ORA-01732が発生します。これは、10g データベースでのみサポートされています。
PreparedStatement
を使用してCALLブロックを実行すると、問題が発生します。CALLブロックにoutパラメータが含まれ、そのoutパラメータが登録されていないと、実行エラーが発生します。回避策は、CALLブロックをCallableStatements
を使用して実行し、outパラメータを登録することです。
接続を共有するスレッドでOracleOCIConnectionPool
の使用中に、Javaスレッドがデッドロックします。
SQL92関数{fn LOCATE()}
が誤って処理されます。
メソッドOracleDataSource.getConnection
は同期化されたメソッドをコールするため、接続キャッシュが長時間ロックされることがあります。これは、接続を停止する際に主に発生する問題です。
SQLException: キャッシュされた行セットでgetInt
をVARCHAR
列に対してコールすると、内部表現への変換が失敗します。
問合せのタイムアウトの期限切れ、またはStatement.cancel
のコールによって、Thinドライバが停止します。
グローバル・トランザクション(XA起動)の開始後にOracleXAConnection.getConnection()
をコールすると、SQLException
がスローされます。回避策は、グローバル・トランザクションを開始する前に接続を取得することです。
Statement.clearWarnings
ですべての警告が消去されません。
古い接続キャッシュOracleConnectionCacheImpl
を使用している場合、Statement.getConnection
は論理接続ではなく物理接続を戻します。
ScrollableResult
セットのクローズ時にJava VMがデッドロックします。
日本語キャラクタ・セットの使用時に大きい文字列をバインドすると、ORA-01461が発生します。
スクロール可能な結果セットを生成するプリコンパイルされたSQL文にストリームをバインドしようとすると、StackOverflowError
が発生します。
Calendar
引数を指定してResultSet.getTimestamp
メソッドを使用すると、ドライバでタイムスタンプが秒に切り上げられます。
setString
の後、同じパラメータ位置に文字以外のデータのsetXXXがあると、誤ったデータが挿入されます。
UTF8文字列をJava文字列に変換すると、SQLException
ではなくNullPointerException
が発生することがあります。
SQLData
インタフェースとネストされたサブタイプを使用するとき、深くネストされたサブタイプがNULLの場合、上位レベルのタイプがストアド・プロシージャに渡される際にNULLに設定される場合があります。
プライベート・シノニムの名前が付いたオブジェクト型を参照する際に、問題が発生します。ORA-01406またはORA-01436が発生します。
10g JDBCドライバを使用し、新機能のsetStringForClob()
をsetExecuteBatch()
/sendBatch()
とともに使用して32KBを超えるCLOB/BLOBデータを挿入すると、次のエラーが発生します。
java.sql.SQLException: ORA-00600: 内部エラー・コード。
v8compatibility
フラグが設定されている場合、Timestamp
値は日付としてバインドされます。setNull(Timestamp)
では、NULLの日付値ではなくNULLのTimestamp
値がバインドされます。
クローズされた文に対してexecuteBatch
をコールすると、NullPointerException
が発生します。 回避策は、文を使用する前にisClosed
をチェックすることです。
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メソッドには、次の型の引数を使用できません。
スクロール可能な結果セットの実装には、次の制限があります。
ScrollableResultSet
に対するsetFetchDirection()
は、何もしません。
crollableResultSet
に対するrefreshRow()
では、更新検出と同時実行性の組合せがすべてサポートされるわけではありません。次の表に、サポートされる組合せを示します。
サポート | タイプ | 同時実行性 |
なし | TYPE_FORWARD_ONLY | CONCUR_READ_ONLY |
なし | TYPE_FORWARD_ONLY | CONCUR_UPDATABLE |
なし | TYPE_SCROLL_INSENSITIVE | CONCUR_READ_ONLY |
あり | TYPE_SCROLL_INSENSITIVE | CONCUR_UPDATABLE |
あり | TYPE_SCROLL_SENSITIVE | CONCUR_READ_ONLY |
あり | TYPE_SCROLL_SENSITIVE | CONCUR_UPDATABLE |
AIX顧客がSSLを介してOIDを使用する場合は、[ORACLE_HOME]/jdbc/bin/
にあるスクリプトfixJDBC-tm4ldaps.sh
を実行してclasses12.jar
をパッチする必要があります。このスクリプトは、ネットワークのBug#3882238の修正に含まれています。
トリガーを作成する場合、PreparedStatements
の使用には制限があります。ドライバでは:fooをSQLパラメータとして認識するため、PreparedStatement
の使用時に、トリガーを定義するSQLで:inおよび:outを使用できません。回避策は、かわりにStatement
を使用することです。
JDBCドライバはZHT16DBTデータベース・キャラクタ・セットをサポートしていません。
ZHT16DBTからUnicodeなど他のキャラクタ・セットへのデータベース文字マッピングはありません。ASCII以外のすべての文字は置換文字に置き換えられます。この問題を回避するには、データベース・キャラクタ・セットをAL32UTF8などのUnicodeキャラクタ・セットに変更する必要があります。
Linuxの場合、表の名前に含まれるSJISデータは、ThinドライバでもOCIドライバでもJDKを使用して置換文字として戻されます。これはJDKの不具合によるものです。回避策として、JDK 1.3.1_09-b03を使用すると正常に動作します。JDK 1.4.2_02-b03では、この問題が発生します。
更新可能な結果セットに対してinsertRow
メソッドを実行すると、行はデータベースに挿入されますが、結果セット自体には挿入されません。
nativeXA
をtrueに設定してOracleXADataSource
を使用するとき、JDBC type2(OCIドライバ)はマルチスレッド環境で機能しません。OCIドライバは、OracleのC/XAライブラリを使用して分散トランザクションをサポートします。分散トランザクションでは、グローバル・トランザクションの再開前にスレッドごとにXAConnection
の取得が必要です。
JDBC OCIドライバのTAF機能は、JDBCの高速接続フェイルオーバーとともに使用すると機能しません。この問題は、TAFが有効な場合、TAFによって実際に検出されフェイルオーバーされた接続がJDBCの高速接続フェイルオーバーによって削除されるために発生します。回避策はありません。TAFと高速接続フェイルオーバーは一緒に使用できません。
close()
メソッドを使用して明示的にクローズしていないJDBC接続は、OracleConnectionCacheImpl
に基づいてデータソースを使用しているとき、タイムアウト経過後に暗黙的にクローズされません。回避策は、新規の暗黙的な接続キャッシュを使用することです。
KPRBドライバは、データベースのLONG列から1MBのみ文字を取得する際に、余分に文字を取得します。この問題は、データベース・キャラクタ・セットがUTF8の場合に、OraclePreparedStatement.getCharacterStream()
で発生します。
OracleDataSource
に対する特定のAPIでは、キャッシュ対応のデータソースのみが対象になります。OracleDataSource
がキャッシュ対応になるのは、OracleDataSource
に対してsetConnectionCachingEnabled
APIがコールされた後のみです。
KPRBドライバは、32766以上の文字をデータベースのLONG列に挿入する場合、OraclePreparedStatement.setString()
を使用します。データベース・キャラクタ・セットがZHT32TRISの場合は、データの切捨てが発生します。
JDBCの暗黙的な接続キャッシュは、HA条件の下でminLimitに対応していません。インスタンスが停止すると、影響を受ける接続はFCF DOWNイベント処理で削除され、接続キャッシュが最小制限の設定値を下回る場合は削除されます。これは正常な動作で、アプリケーションの接続要求が安定した状態になるに従って、接続数は増加します。
Thinドライバは、AL32UTF8のデータベースで、OracleResultSet.getString()
の無効な文字に対してNullPointerExceoption
をスローします。
JDBCの暗黙的な接続キャッシュに関する問題です。Connection Cache Managerは、2つのモードをサポートするAPI refreshCache
をサポートしています。REFRESH_ALL_CONNECTIONS
モードが指定されている場合は、チェックアウトされた接続を含めて、すべての接続がリフレッシュされるのが正しい動作です。現在は、キャッシュ内の使用可能な接続のみクローズおよび再作成されます。
インスタンスが停止後に起動された場合、JDBCの暗黙的な接続キャッシュによって接続のロード・バランシングはトリガーされません。この問題の影響は、再起動したインスタンスで新規接続が即時に作成されないことです。UPイベントのロード・バランシングには、次の2つの場合があります。
インスタンス結合時のUPイベントのロード・バランシング
インスタンス停止後のUPイベントのロード・バランシング
この問題は、(b)の場合にUPイベントのロード・バランシングの動作に影響します。この不具合に対応したパッチについては、OTNを確認してください。
KPRBドライバは、OraclePreparedStatement.setCharacterStream()
で1MB以上のデータをデータベースのLONG列に挿入した場合、および1つの文で4KBをVARCHAR2列に挿入した場合に、ORA-01461をスローします。
JDBC OCIドライバがOCI FANの受信時にフェイルオーバーしません。