Oracle JDBCに関するよくある質問(FAQ)
このFAQには、オラクルのJDBCドライバに関するよくある質問(FAQ)とその回答が含まれています。このFAQでは、特定の技術的な質問のみを扱い、既知の問題についても説明しています。これらの機能の詳細およびアプリケーションでの使用方法については、『JDBC開発者ガイド』およびJDBCのJavadocを参照してください。
よくある質問
すべて開くすべて閉じる-
-
26aiの新機能
-
Java開発者用のドキュメントに関連するOracle Database Cloud Serviceの有無
-
JDBCの概要
すべて開くすべて閉じる-
-
JDBCとは何ですか。
-
JDBCの詳細はどこから入手できますか。
-
Javaの詳細はどこから入手できますか。
-
リリース |
利用開始(GA)日 |
Premier Supportの期限 |
Extended Supportの期限 |
Sustaining Supportの期限 |
|---|---|---|---|---|
| 26AI | 2026年1月 |
|
2031年12月 | 無期限 |
| 21c (Innovation Release) | 2021年8月 | 2027年7月 | 設定なし | 無期限 |
| 19c (長期サポート・リリース) | 2019年4月 | 2029年12月(ライフタイム・サポート・ポリシーを参照) | 2032年12月 | 無期限 |
| 18c | 2018年7月 | 2021年6月 | 設定なし | 無期限 |
| 12.2 | 2017年3月 | 2020年11月30日(制限付きエラー修正期間: 12.2.0.1 - 2020年12月1日~2022年3月31日) | 設定なし | 無期限 |
| EE 12.1 | 2013年6月 | 2018年7月 | 2021年7月 | 無期限 |
相互運用性マトリックス |
Database 23.x |
Database 21.x |
Database 19.x |
Database 18.3 |
Database 12.2 および 12.1 |
|---|---|---|---|---|---|
| JDBC 23.x | はい | はい | はい | なし | なし |
| JDBC 21.x | はい | はい | はい | あり | あり |
| JDBC 19.x | はい | はい | はい | あり | あり |
| JDBC 18.x | なし | あり | あり | あり | あり |
| JDBC 12.2 and 12.1 | なし | あり | あり | あり | あり |
Oracle Databaseのバージョン |
リリース固有のJDBC jarファイル |
|---|---|
| 23.x | ojdbc17.jar(JDK17、JDK19、JDK21、およびJakarta APIをサポートするJDK25用) ojdbc11.jar(JDK11、JDK21用) ojdbc8.jar (JDK8、JDK11) |
| 21.x | ojdbc11.jar(JDK11、JDK17、JDK19、JDK21用) ojdbc8.jar (JDK8、JDK11) |
| 19.x | ojdbc10.jar(JDK11、JDK17、JDK19、およびJDK21(19.25以降)用) ojdbc8.jar(JDK8、JDK11、JDK17、JDK19、およびJDK21(19.25以降)用) |
| 18.x | ojdbc8.jar (JDK8、JDK11) |
| 12.2 または12cR2 | ojdbc8.jar(JDK 8用) |
| 12.1 または12cR1 | ojdbc7.jar(JDK 7、JDK 8用) ojdbc6.jar(JDK 6用) |
| 11.2 または11gR2 | ojdbc6.jar(JDK 6、JDK 7、JDK 8用) (注意: JDK7およびJDK8は、11.2.0.3および11.2.0.4でのみサポートされます) ojdbc5.jar(JDK 5用) |
Oracle Databaseのバージョン |
JDBC仕様の準拠 |
|---|---|
| 23.xおよび21.x | ojdbc11.jarのJDBC 4.3 ojdbc8.jarのJDBC 4.2 |
| 19.x | ojdbc10.jarのJDBC 4.3 ojdbc8.jarのJDBC 4.2 |
| 18.3 | ojdbc8.jarのJDBC 4.2 |
| 12.2 または12cR2 | ojdbc8.jarのJDBC 4.2 |
| 12.1 または12cR1 | ojdbc7.jarのJDBC 4.1 ojdbc6.jarのJDBC 4.0 |
| 11.2 または11gR2 | ojdbc6.jarのJDBC 4.0 ojdbc5.jarのJDBC 3.0 |
その他のリリース固有の質問
すべて開くすべて閉じる-
-
Oracle JDBCドライバはOpenJDKに対して認証されていますか。
-
JDK11とともに使用する推奨の19.x JDBCドライバを教えてください。
-
上の表に記載されていないJDBCバージョンについて教えてください。
-
JDBC jarファイルはどこから入手できますか。
-
19.x JDBCドライバのダウンロード・ページにある複数のJARファイルの違いについて教えてください。
-
Oracle JDBCの概要
すべて開くすべて閉じる-
-
オラクルが提供するJDBCドライバにはどのようなものがありますか。
-
どのドライバを使用すればよいですか。
-
サーバーThinドライバおよびサーバー内部ドライバ用のjarファイルについて教えてください。
-
サード・パーティ・ベンダーは、Oracle JDBCドライバと自社のソフトウェアを同時に配信できますか。
-
Oracle JDBCドライバが必要とするのはどの権限ですか。
-
インストール
すべて開くすべて閉じる-
-
Thinドライバをインストールするにはどうすればよいですか。
-
OCIドライバをインストールするにはどうすればよいですか。
-
サーバー・ドライバにサーバー側内部ドライバまたはThinドライバをインストールするにはどうすればよいですか。
-
DriverManagerおよびDataSource
すべて開くすべて閉じる-
-
DriverManagerとDataSourceの違いについて教えてください。
-
どの接続プールを使用すればよいですか。
-
JDBC OCI接続プーリングとは何ですか。
-
接続
すべて開くすべて閉じる-
-
URLの形式について教えてください。
-
記述の形式について教えてください。
-
プロパティの引数はどのように使用すればよいですか。
-
クラスOracleDriverをDriverManagerに登録しなくてもよいですか。
-
サーバー内部ドライバに接続する際には、どのユーザー名とパスワードを使用すればよいですか。
-
デフォルトのプリフェッチ値を大きく設定すると、OutofMemoryエラーが発生します。どうすればよいですか。
-
サービス接続文字列とは何ですか。
-
SYSDBAまたはSYSOPERとして接続するにはどうすればよいですか。
-
Oracle JDBCドライバでは、どのような暗号化方法がサポートされていますか。
-
JDBC Thinドライバで暗号化とチェックサムを有効にするにはどうすればよいですか。
-
プロキシ認証とは何ですか。
-
Oracle JDBCドライバではSSLはサポートされていますか。
-
Oracle JDBCドライバでは接続URLでLDAPはサポートされていますか。
-
JDBCを使用して、ファイアウォールの後方にあるデータベース・サーバーに接続するにはどうすればよいですか。
-
-
Statement、PreparedStatement、CallableStatement
-
defineColumnTypeとは何ですか。どのような場合に使用すればよいですか。
-
defineColumnTypeはサーバーで強制的に変換されますか。
-
アプリケーション・コードでstmt.setEscapeProcessing(false)をコールするのではなく、JDBCドライバ・レベルでEscapeProcessingを無効にするにはどうすればよいですか。
-
Oracle JDBCドライバでは、名前によるバインド機能は提供されていますか。
-
Oracle JDBCドライバでは、PreparedStatementのsetXXXメソッドでどのようにしてデータ型が特定されますか。
-
ターゲット・パラメータの型がsetXXXメソッドで前提とした型と同じではない場合、どうなりますか。
-
ドライバによりクライアント側で変換が実行されないのはなぜですか。
-
バイト・データを表の列に挿入する場合、データ型は何ですか。
-
文字データを表の列に挿入する場合、データ型は何ですか。
-
setString、setCharacterStream、setAsciiStreamのサイズはどれくらいですか。また、setBytesとsetBinaryStreamを介したバイナリ・データのサイズ制限はどれくらいですか。
-
形式 |
Stmt |
ドライバ |
下限 |
上限 |
バインド・メカニズム |
注 |
|---|---|---|---|---|---|---|
| すべて | すべて | すべて | 0 | 0 | null | |
| すべて | SQL | クライアント | 1文字 | 32,766文字 | 直販 | |
| すべて | SQL | クライアント | 32,767文字 | 2,147,483,647バイト | ストリーム | |
| すべて | SQL | クライアント | 2,147,483,648バイト | 2,147,483,647文字 | 一時CLOB |
|
| CHAR | |
サーバー | 1文字 | 65,536バイト | 直販 |
1, 2 |
| NCHAR | |
|
1文字 | 4,000バイト | 直販 |
|
| NCHAR | |
|
4,001バイト | 2,147,483,647文字 | 一時CLOB |
|
| CHAR | |
|
65,537バイト | 2,147,483,647文字 | ストリーム |
|
| |
|
|
2,147,483,647バイト | 2,147,483,647文字 | 一時CLOB |
| すべて | PL/SQL | すべて | 1文字 | 32,512文字 | 直販 | |
| すべて | PL/SQL | すべて | 32,512文字 | 2,147,483,647文字 | 一時CLOB |
API |
FORM |
Stmt |
ドライバ |
下限 |
上限 |
バインド・メカニズム |
注意 |
|---|---|---|---|---|---|---|---|
| setBytesForBlob | なし |
すべて | すべて | 0 |
0 |
null | |
| |
|
すべて | クライアント | 1バイト | 2,000バイト |
直販 | |
| |
|
すべて | クライアント | 2,001バイト | 21,474,836,487バイト | 一時BLOB | 2 |
| setStringForClob | すべて |
すべて | すべて | 0 | 0 | null | |
| |
すべて |
すべて | クライアント | 1文字 | 32,766文字 | 直販 | |
| |
すべて |
すべて | クライアント | 32,766文字 | 2,147,483,647文字 | 一時CLOB | |
| |
すべて |
すべて | サーバー | 1文字 | 4,000バイト | 直販 | |
| |
すべて |
すべて | サーバー | 4,001バイト | 2,147,483,647文字 | 一時CLOB | 1 |
すべて開くすべて閉じる
-
-
スイッチング・バインドのタイプにより、サーバー側における追加の文解析が強制的に実行されますか。
-
IN OUTパラメータを指定したCallableStatementsとプロシージャについて教えてください。
-
バインド・タイプを変更すると、多様性を持ったPL/SQLプロシージャの選択肢は変更されますか。
-
既存のコードについて教えてください。
-
一部のケースでは、ドライバが一時LOBを作成します。この場合、ドライバはこれらのLOBを追跡して解放しますか。
-
UTF8のような可変幅のキャラクタ・セットを使用しています。ドライバにより、文字列の実際のバイト長は修正されますか。
-
巨大な文字列に対して、たとえばsetStringを使用するのは適切ですか。
-
LONG RAWおよびLONG列タイプは非推奨です。この場合、setXXXStream APIを新しく使用するのはなぜですか。
-
LOB APIは非常に柔軟性が高いというのは正しいですか。
-
select * from tab where id in (?, ?, ?, ...)を実行するPreparedStatementを作成できないのはなぜですか。
-
ResultSets
すべて開くすべて閉じる-
-
"Exhausted Resultset: prepare_for_new_get"とはどういう意味ですか。
-
ResultSetをクローズする必要があるのはなぜですか。
-
単純なデータ型
すべて開くすべて閉じる-
-
DATEおよびTIMESTAMPの現在の状況について教えてください。
-
バインドできる最長値はどれくらいですか。
-
メソッド |
列タイプ |
最大長 |
|---|---|---|
setBytes |
LONG |
4,000バイト |
setBytes |
LONG RAW |
2ギガバイト |
setString |
LONG |
32,000文字( |
setString |
|
20億文字 |
すべて開くすべて閉じる
-
-
TIMESTAMP WITH TIME ZONEの読取り結果が異なるのはなぜですか。
-
高度なデータ型(オブジェクト)
すべて開くすべて閉じる-
-
ADTのインスタンスはどのようにして作成すればよいですか。
-
標準のファクトリ・メソッドcreateArrayOfがサポートされていないのはなぜですか。
-
BFILE、BLOB、CLOB
すべて開くすべて閉じる-
-
DBMS_LOB.ERASEが実行する処理は何ですか。
-
oracle.sql.CLOB.putChars()は使用できますか。
-
OCIには、CLOB CharSetIdを操作する機能が備えられています。JDBCと同等なものは何ですか。
-
BLOBへの書込みはLONG RAWの挿入より遅いですか。
-
Streamサンプル・コードでLobLengthを取得した際に、ORA-03127エラーが表示されるのはなぜですか。
-
データベースからCLOBを取得して更新した際、データベースに変更内容が表示されないことがあります。なぜでしょうか?
-
REF型
すべて開くすべて閉じる-
-
2つの異なるJDBCクライアント(EJB、JDBCクライアントなど)間でoracle.sql.REFを渡すには、どうすればよいですか。この際、REFクラスはシリアライズ可能ではないですか。
-
新しいREFを作成するにはどうすればよいですか。
-
OPAQUE型
すべて開くすべて閉じる-
-
OPAQUE型とは何ですか。
-
Row Sources
すべて開くすべて閉じる-
-
実行後にスクロール可能性属性を設定しましたが、RowSetのスクロール可能性に反映されません。なぜでしょうか?
-
RowSetにストリームが含まれている場合でも、RowSetオブジェクトをフラット・ファイルにシリアライズできますか。
-
Thinドライバ
すべて開くすべて閉じる-
-
Javaアプリケーションの開発にJDBC Thinドライバは使用できますか。
-
サーバー内部ドライバ
すべて開くすべて閉じる-
-
サーバー内部ドライバはいつ使用すればよいですか。
-
サーバーThinドライバ
すべて開くすべて閉じる-
-
サーバーThinドライバはいつ使用すればよいですか。
-
エラー
すべて開くすべて閉じる-
-
DriverManager.getConnectionで、"適切なドライバがありません"というエラーが出ます。
-
エラー・メッセージ:"UnsatisfiedLinkError with OCI driver"
-
エラー・メッセージ:"ORA-1019: unable to allocate memory."
-
エラー・メッセージ:"ORA-01000: maximum open cursors exceeded"
-
エラー・メッセージ:"ORA-01002: fetch out of sequence"
-
エラー・メッセージ:"ORA-12705: invalid or unknown NLS parameter value specified"
-
エラーORA-12705でテキストを取得し直そうとしているときに表示されるエラー
-
エラー・メッセージ:JDBC ThinドライバでUnicodeのリテラルに"invalid character"エラーが発生する
-
INSERTまたはUPDATEのオペレーションが遅い
-
エラー・メッセージ:"Connection reset by peer"
-
"Protocol Violation"とはどのような意味ですか。
-
デモ・プログラム
すべて開くすべて閉じる-
-
JDBCのデモ・プログラムはありますか。
-
デモの実行方法を教えてください。
-
デモ実行時にエラーが発生した場合はどうすればよいですか。
-
Oracle JDBCトレース機能
すべて開くすべて閉じる-
-
JDBCトレース機能とは何ですか。
-
古いJDBCトレース機能を有効にする方法を教えてください。
-
トレース出力量の制御方法を教えてください。
-
トレース情報の出力先はどこですか。
-
DMS対応jarでDMSを無効にする方法を教えてください。
-
開発ツールと環境
すべて開くすべて閉じる-
-
JDBCプログラムはSymantec Visual Cafeでデバッグできますか。
-
JDBCプログラムはMicrosoft Visual J++でデバッグできますか。
-
サポートされる機能
すべて開くすべて閉じる-
-
JDBCドライバはPL/SQLストアド・プロシージャにアクセスできますか。
-
JDBCドライバではストリーミングはサポートされていますか。
-
JDBCドライバではマルチバイト・キャラクタ・セットはサポートされていますか。
-
JDBCドライバはファイアウォールとともに動作しますか。
-
Oracle JDBCドライバではPL/SQL表/結果セット/レコード/ブールはサポートされていますか。
-
フェイルオーバーはサポートされていますか。
-
JDBCドライバによるOracle ROWIDデータ型のサポート方法を教えてください。このことは、getCursorNameおよびsetCursorNameとどのように関係しているのですか。
-
JDBCドライバによるOracle REFCURSORデータ型のサポート方法を教えてください。
-
ANOはJDBCドライバとともに動作しますか。
-
oracle.sql.*データ型はシリアライズできますか。
-
JDBCドライバではオブジェクトまたはコレクションはサポートされていますか。
-
WaitOptionおよびAutoRollbackは使用できますか。
-
1つのデータベース・インスタンスのJavaストアド・プロシージャにより、別のデータベース・インスタンスへの接続をオープンできますか。
-
パフォーマンス
すべて開くすべて閉じる-
-
より高速なのは、ThinドライバとOCIドライバのどちらですか。
-
より高速なのは、StatementとPreparedStatementのどちらですか。
-
java.util.logging
すべて開くすべて閉じる-
-
java.util.loggingを使用して、Oracle JDBCドライバのトレース出力を取得する方法を教えてください。
-
java.util.loggingを構成して、Oracle JDBCの有効なトレース出力を取得する方法を教えてください。
-
サーバー側内部ドライバについて教えてください。
-