Oracle ODBC Driver README
原典情報: $ORACLE_HOME/odbc/html/ODBCRelnotesUS.htm
目次
説明
新機能
マトリックスのテスト
機能
ソフトウェアのサポート
必要なハードウェア
必要なソフトウェア
サーバー・ソフトウェア要件
追加情報
説明
Oracle ODBCドライバによって、アプリケーションは、Microsoft Open Database Connectivity (ODBC)APIを使用するWindowsクライアントおよびUNIXクライアントからOracleデータベースに接続して、Oracleデータベースへの読取りや書込みを実行できるようになります。
Oracle ODBCドライバ配布キットには、ダイナミック・リンク・ライブラリ/共有ライブラリ(UNIXプラットフォーム向け)、Windowsヘルプ・ファイル(Windowsプラットフォームでのインストールのみ)、ライセンスおよび本製品の説明が含まれます。 ODBC対応アプリケーションを使用するには、Oracle ODBCドライバの他に次のソフトウェアが必要です。
- Oracle Client& Netバージョン11.2.0.1.0
- Oracle Database Server
Oracle ODBCドライバはODBC 3.52仕様に準拠しています。
新機能
ODBC 11.2.0.1.0
Microsoft Windows XP、Microsoft Windows 2003 Server、Microsoft Windows Vista、Linux X86-32(RHEL AS 4、5)、Linux X86-64(RHEL AS 4、5)(32/64ビット)、Sun Solaris SPARC64(9,10)(32、64ビット)、IBM AIX 5L 5.2 (32、64ビット)、Linux IA64(64ビット)、Linux on Power (32、64ビット)、Sun Solaris X64(64ビット)、Hewlett Packard Itanium(32、64ビット) Oracle ODBCドライバ・リリース11.2.0.1.0ソフトウェアオペレーティング・システムは次のとおりです。
- Oracle ODBCドライバは、ODBCアプリケーションのパフォーマンスを改善するためにLONG/ LONG RAWデータをプリフェッチするように拡張されました。これを行うには、LONGデータ(MaxLargeData)の最大サイズをWindowsのレジストリで(DSNにレジストリ・キーMaxLargeDataを追加する必要もあります)、UNIXプラットフォームではodbc.iniファイルを手動でそれぞれ設定する必要があります。この機能拡張によって、ユーザーが設定するMaxLargeDataサイズに応じて、Oracle ODBCドライバのパフォーマンスが最大で10倍まで向上しました。MaxLargeDataのデフォルト値は0で、ユーザーが設定可能なMaxLargeDataの最大値は、64KB(65536バイト)です。MaxLargeDataが65536より大きい値に設定されている場合でも、フェッチされるデータは65536バイトのみになります。ユースがデータベースに65536バイトより大きいLONG/ LONG RAWデータを持つ場合、MaxLargeDataは0(デフォルト値)に設定してください。これにより、単一の行のフェッチとなり、完全なLONGデータがフェッチされます。ユーザーが非ポーリング・モードでMaxLargeDataサイズより小さいバッファを渡す際に、データベースのLONGデータ・サイズがバッファ・サイズより大きい場合、データの切捨てエラーが発生します。(拡張リクエスト7006879)。
- Oracle ODBCドライバは、odbc.iniのUseOCIDescribeAnyオプションを使用してREF CURSORSを返す小さいパッケージのプロシージャへのコールをアプリケーションが頻繁に行う場合に、OCIDescribeAny()のコール(メタデータの取得が目的)をサポートするようになりました。UNIXプラットフォームでOCIDescribeAny()を使用するには、odbc.iniファイルで"UseOCIDescribeAny"を"T"(TRUE)に設定し、WindowsではDSNのレジストリを使用してください。(拡張リクエスト7704827)。
ODBC 11.1.0.1.0
- 無効化ルール・ヒントのサポートが追加されました。Oracle ODBCドライバで、カタログAPIのルール・ヒントを使用するかどうかを選ぶオプションをユーザーが指定できるようになりました。この変更は、カタログAPIのODBCドライバのパフォーマンスを向上させるために行われました。このオプションのデフォルト値はTRUEで、これはルール・ヒントがカタログAPIでデフォルトで使用されないことを意味します。(Oracle Bug#4150034)。
- 数値をFLOATとしてバインドする機能のサポートが追加されました。列に浮動小数点データが含まれる場合にNUMBER列をFLOATとして列でバインドすることで、FLOATとしてのバインド変数を使用するクエリーの実行が高速化されます。(Oracle Bug#4608183)。
- 各セッションの文のキャッシュの提供および管理を行うOCI文のキャッシング機能に対するサポートが追加されました。OCI文のキャッシング・オプションのサポートを実装することで、ユーザーが同じ接続で同じ文を何度も解析する必要がある場合に、Oracle ODBCドライバのパフォーマンスが向上します。文のキャッシング・フラグのデフォルト値はFALSEです。
- 不要なメモリーの呼出しを保存して、ODBCドライバのパフォーマンスを向上させることにより、結果セット・キOracleャッシュの動作が変更されました。
ODBC 10.2.0.1.0
- 名前付きパラメータのサポートが追加され、名前によってパラメータをバインドできるようになりました。Oracle ODBCドライバで、アプリケーションがプロシージャ・コールのストアド・プロシージャへのパラメータを名前によって指定できるようになりました。名前付きパラメータは、ストアド・プロシージャへのコールでのみ使用し、他のSQL文では使用しないでください。(Oracle Bug#3617324)
- パッケージに存在するストアド・プロシージャのメタデータを記述するための動作が変更されました。この変更は、ストアド・プロシージャ・コールでのODBCドライバのパフォーマンスを向上させるために行われました。ストアド・プロシージャがパッケージにあるときは、PL/SQLプロシージャを使用してメタデータが記述されます。(Oracle Bug#4030664)
- LinuxおよびSolarisプラットフォーム用のOracle ODBCドライバのサポートは、バージョン10.2.0.1で導入されます。リリース10.2.0.4からは、ODBCドライバはAIXプラットフォームにも対応するようになりました。
ODBC 10.1.0.2.0
- パラメータ・マーカーを持つINSERT/UPDATE文のNCHAR列へのサポートが追加されました。(Oracle Bug#2827132) 以前はドライバが、列がNCHAR型であることを認識せずに、OCIレベルでバインドする際に正しい属性の設定に失敗していました。 二次的に、SQLDescribeParamのコールによって、INSERT/UPDATE文のパラメータに有益な情報が返されるようになりました。ただし、他の文タイプではこれは機能しません。
- 4GBを超えるLOBのサポートが追加されました。 Oracleクライアントおよびデータベースの両方が、バージョンOracle 10g以上である必要があります。
- 10g以上のサーバーでは、新しいBINARY_FLOATおよびBINARY_DOUBLEデータ型へのサポートが追加されました。
- SQL文でのMONTHNAME関数とDAYNAME関数のサポートが追加されました。
マトリックスのテスト
次の表に、ODBCドライバが認定を受けたWindows XPでのテスト構成の概要を示します。 この表は、サポートされている全環境の完全なリストではありません。
ドライバ バージョン | データベース バージョン | オペレーティング・ システム | MDAC |
11.2.0.1 | サポート対象 OCI | Windows XP | 2.8 |
UNIXプラットフォームのマトリックスのテストについては、UNIXプラットフォーム用Oracle ODBCドライバのリリース・ノートを参照してください。
機能
Oracle ODBCドライバは、Microsoft ODBCバージョン3.52の仕様に準拠しています。
ソフトウェアのサポート
使用しているOracle ODBCドライバについてOracleサポートを受けるには、(650) 506-5578(米国)に電話で問い合せるか、最寄りのオラクル社の営業所まで連絡してください。必要なサポート契約がない場合、Oracle ODBCドライバのサポートが提供されませんのでご注意ください。
必要なハードウェア
Oracle ODBCドライバには、リリース・ノートに記載されているとおりの、Windows XPプラットフォームおよびごく一部のUNIXプラットフォームでサポートされているシステム構成が必要です。
必要なソフトウェア
Microsoft Windows XPおよびUNIXプラットフォームについては、UNIXプラットフォーム用Oracle ODBCドライバ・リリースのリリース・ノートを参照してください。
Oracle Netクライアント11.2.0.1.0
Oracle 11.2.0.1.0とともに出荷されるOracle Universal Installer
サーバー・ソフトウェア要件
この項では、Oracle ODBCドライバによるODBC対応アプリケーションのサポートに必要なサーバー・ソフトウェアの一覧を記載します。
Oracle Server 10.2以上
追加情報
インストール後
Microsoft(R) ODBC Administratorを使用して、Windows上でOracle ODBCドライバのデータ・ソースを構成してください。Oracle ODBCドライバのヘルプ・ファイルのデータ・ソースの構成の関する項を参照してください。UNIXクライアントの場合は、次の4番目のポイントを参照してください。
データ変換
Oracle ODBCドライバは、realおよびdoubleデータ型の操作と表示に関して、Microsoft(R) ODBC 3.00ソフトウェア開発キット(SDK)のガイドラインに従います。SQL_DOUBLEおよびSQL_FLOATの精度(使用する小数点以下桁数の最大数)は15です。
Oracleデータベースにdouble値が格納されている場合、これらのデータ型の精度はODBCで現在サポートされているものよりかなり大きくすることができます。最終的な結果として、精度が失われることになります。次に例を示します。
Oracleでデフォルトの精度を使用して定義されたfloatデータ型は、次のような数値を含みます。
123.9991029382123
Windowsプラットフォーム上で変換されると、この数値の精度は次のように低くなります。
123.999102938212
失われた精度が、別のアプリケーションに異なる動作をもたらす可能性があります。Microsoft Access(R)の場合、ユーザーはこのデータを更新できません。Microsoft Access(R)は、データが変更されたと認識します。これは、Oracleの値が123.9991029382123で、Microsoft Access(R)に元の数値がありながら、切り捨てられた数値が123.99910293821であるためです。Microsoft Access(R)は、切り捨てられた数値123.99910293821を選択基準として使用して行を更新することはできません。この行がOracleデータベースに存在しないためです。 123.9991029382123を持つ元の行のみが、Oracleデータベースには存在します。
Microsoft Query(R)では、正しい内容が表示されません。たとえば、次の倍精度の数値を表示する場合について考えてみます。
-1.123400000000000E-001
Microsoft Query(R)では、数値は次のように表示されます。
-1.123400000000000E-00
Microsoft Query(R)は、表示サイズ22を返すSQLColAttributesをコールします。倍精度のデータを表示するためにODBC SDKに定義される形式は、次のとおりです。
長さ合計22
(符号、15桁、小数点、文字E、符号、3桁)
この例には、精度15桁ではなく、16桁の文字列の長さ合計23が含まれます。これが、正しいデータ表示されない理由です。
一般的に、ODBCを使用した精度の問題を防止するには、Oracleデータベースに格納されるdoubleデータ型のデータが、『Microsoft ODBC Programmer's Reference and SDK Guide』に記載された仕様に準拠することを確認してください。
Oracle ODBCドライバの既知のソフトウェアの問題
- SQLSetStmtOption SQL_QUERY_TIMEOUTは、データベース・サーバーがWindows NT上で実行されている場合は機能しません。 回避策として、サーバーのsqlnet.oraでBREAK_POLL_SKIP=1と設定すると、問題が解決します。デフォルトでは、これは100に設定されており、データベースはODBCアプリケーションによって設定されたタイムアウトをチェックしません。
- Windows NTデータベース・サーバー上で実行中の文を取り消す場合、SQLCancelは機能しません。
- SQLBindParameterがバッファをSQL_PARAM_INPUT_OUTPUTとしてバインドし、IN OUTパラメータを持つPL/SQLプロシージャを持っていて、パラメータがプロシージャで変更されない場合、ドライバはStrLen_or_IndPtrでSQL_NULL_DATAを返しません。
UNIXプラットフォーム用ODBCドライバ
UNIXプラットフォーム用Oracle ODBCドライバのリリース・ノートを参照してください。
修正されたソフトウェアの問題
注意: ほとんどの修正は、特定のプラットフォームで見られることはあっても一般的な内容です。プラットフォーム固有の修正も、わずかながらあります。 |
バージョン11.2.0.1.0
- ODBCドライバが、Solaris上でSQLBindColに対して間違った長さを返していました(ポート固有)(Oracle Bug#7660125)
- ODBCドライバで、ストアド・プロシージャから結果セットが返されるときに、メモリー・リークが報告されました。(Oracle Bug#7586197)
- サイズが65536を超える場合に、ODBCがLONG RAWの更新に失敗しました(Oracle Bug#7585970)。
- MTSが有効な場合に、ODBCアプリケーションがNULLパスワード・エラーのために失敗していました(Oracle Bug#7509964)
- ストアド・プロシージャの実行直後に、ODBCドライバからアクセス違反が返されていました。(Oracle Bug#7458976)
- より多くの接続が作成されると、ODBCアプリケーションが停止していました。(Oracle Bug#7388606)
- NULLでない文字列が終了してSQLSetParm()がコールされると、ODBCアプリケーションがクラッシュしていました。(Oracle Bug#7011807)
- バルク操作に対してクエリーを実行した直後に、ODBCドライバでORA-24817が報告されていました。(Oracle Bug#6908070)
- リテラルでNLS文字を使用し、NLSの設定をNLS_LENGTH_SEMANTICS= CHAR , NLS_CHARACTERSET = AL32UTF8にしているときに、ODBCドライバからSQLGetData()で間違った長さおよびデータが返されていました。(Oracle Bug#6801797)
- 64ビット環境でデータをフェッチ中に、ODBCドライバがクラッシュしていました。(Oracle Bug#6801211)
- SQLDescribeParam()、SQLDescribeCol()、SQLColumns()、SQLGetTypeInfo()を使用中に、ODBCドライバで間違った型が表示されていました。(Oracle Bug#6598695)
- ODBCドライバがSQLGetStmtAttr()でクラッシュしていました。(Oracle Bug#6416638)
- Solaris SPARC上でキャッシュ・ブロックのメモリーが整列されていないときに、ODBCドライバでSIGBUSが報告されていました。(Oracle Bug#6411945)
- プロシージャのメタデータを記述する際に、ODBCドライバで[ORACLE][ODBC]メモリー割当てエラーが返されていました。(Oracle Bug#6085754)
- insert文の実行後にプロシージャを実行すると、ODBCドライバでエラーが報告されていました。(Oracle Bug#5961436)
- SQL文の前にSQL文型を指定しないなんらかの有効なトークンがあると、ODBCドライバで必ずORA-24374が報告されていました。(Oracle Bug#5383456)
- ODBCドライバでSQLExecute()の実行時に、同じエラー・メッセージが2回返されていました。(Oracle Bug#5222165)
- 行コメントを含むクエリーを実行すると、ODBCドライバでORA-24374が返されていました。(Oracle Bug#4743995)
バージョン11.1.0.1.0
- ストアド・プロシージャに入力パラメータとして大きいCLOBパラメータが含まれる場合に、ODBCドライバがストアド・プロシージャの出力パラメータの更新に失敗していました。(Oracle Bug#5365475)。
- ODBCドライバが10GBデータベースに接続する場合に、Doubleデータについて正しい切捨てを行っていませんでした(Oracle Bug#5389003)。
- ストアド・プロシージャに入力パラメータとして大きいCLOBパラメータが含まれる場合に、ODBCドライバがストアド・プロシージャの出力パラメータの更新に失敗していました(Oracle Bug#5365475)。
- UNICODE文字がクライアントにある場合に、ODBCドライバがCLOBデータを切り捨てていました。(Oracle Bug#5220440)。
- 読取り専用接続のデータに再度クエリーを実行すると、ODBCドライバで古いデータが返されていました。(Oracle Bug#5202103)。
- MFCアプリケーションがデータベースに対して再度クエリーを実行すると、ODBCドライバでora-1008が報告されていました。(Oracle Bug#5147229)。
- SQL_C_CHARに変換された数値をフェッチすると、ODBCドライバで間違ったデータが返されていました。(Oracle Bug#5128512)。
- ごく一部の列型に対して、ODBCドライバで正しい情報が返されませんでした。(Oracle Bug#5015342)。
- NCLOB列に対してSQLExecute()を2回実行すると、ODBCドライバでORA-12704が報告されていました。(Oracle Bug#4965677)。
- ADO/Excelアプリケーションの終了時に、ODBCドライバでクラッシュが報告されていました。(Oracle Bug#4893583)。
- SQLColumns()の後にSQLBindCol()を呼び出すと、ODBCドライバでデータ型として0が返されていました。この問題はSolarisプラットフォームでのみ発生しますが、この修正は一般的なものです。(Oracle Bug#4880062)。
- ODBCをアンインストールした後も、ODBC AdministratorでODBCエントリが表示されていました。(Oracle Bug#4761792)。
- ODBCドライバで、SQLFetchScroll()コールにより取得されたデータが切り捨てられていました。(Oracle Bug#4735799)。
- 多くのパラメータを持つストアド・プロシージャを実行する際に、ODBCドライバが原因でアプリケーションがクラッシュしていました。 (Oracle Bug#4727495)。
- UNIXODBC.ORGからのDMでエラーが報告されています。ドライバはSQLSETSTMTATTR()をサポートしていません。これはポート固有(Linux/Solaris)の不具合です。 (Oracle Bug#4710548)。
- フェイルオーバーの発生時に、ODBCドライバで未定義の記号'SLEEP'が報告されていました。(Oracle Bug#4698310)。
- バインド・オフセットを使用してNULLデータを挿入する際に、ODBCドライバでクラッシュが報告されていました。(Oracle Bug#4694220)。
- 配列バインドのあるストアド・プロシージャが実行される場合、ODBCドライバが属性SQL_ATTR_PARAMS_PROCESSED_PTRに対応する値を正しく設定していませんでした。(Oracle Bug#4690201)。
- ストアド・プロシージャからVarcharsの配列を返す場合に、ODBCドライバでクラッシュが報告されていました。(Oracle Bug#4690147)。
- ストアド・プロシージャにREF CURSOR変数が含まれる場合に、ODBCドライバが完全な結果セットを出力していました。(Oracle Bug#4624776)。
- REF CURSORパラメータを含むストアド・プロシージャを実行すると、ODBCドライバでエラーが報告されていました。(Oracle Bug#4622561)。
- ODBCドライバで、FLOATデータを含むNUMBER列からのデータのフェッチに時間がかかっていました。(Oracle Bug#4608183)。
- ODBCドライバで、SQLProcedures() APIに対して重複する結果が返されていました。(Oracle Bug#4565416)。
- REFカーソルを含むストアド・プロシージャについて、ODBCドライバでメモリー・リークが報告されていました。(Oracle Bug#4551675)。
- 精度の大きい数値をビューから選択して計算する際に、ODBCドライバでora-1406が返されていました。(Oracle Bug#4546618)。
- マルチスレッド化されたアプリケーションでクエリーを実行する際に、ODBCドライバでクラッシュが報告されていました。(Oracle Bug#4519067)。
- 日本語環境でODBC Administratorが英語のODBCヘルプを呼び出していました。(Oracle Bug#4506552)。
- Long文字列に開始部分にCRLFコードが含まれている場合に、ODBCドライバで「入力文字列が長すぎます。上限は4096です」というエラーが報告されていました(Oracle Bug#4371966)。
- インスタント・クライアント環境下でヘルプ・ファイルを開くときに、ODBC Administratorが失敗していました。(Oracle Bug#4309867)。
- ODBCドライバで、OUTパラメータとしてNCLOBを持つストアド・プロシージャに対して正しくないデータが返されていました。(Oracle Bug#4235212)。
- ODBCカタログ機能の実行に時間が長くかかっていました。(Oracle Bug#4150034)。
****************************************************************************
詳細は、オラクル社の営業担当、または最寄りのオラクル社営業所にご連絡いただくか、1-800-ORACLE1までお電話ください。アメリカ国外からの場合は、650-506-5701をご利用ください。
Copyright Oracle Corporation 2009. All Rights Reserved. Printed in the U.S.A.本書は情報提供のみを目的としております。契約を意図したり、許可するものではありません。Oracleは登録商標です。 Oracle9およびNet9は、Oracleの商標です。Microsoft、Microsoft Access、Microsoft Query、MS、Windows XP、Windows NT、Windows 2000およびWindows 98は、Microsoft Corporationの商標です。PowerBuilderは、Sybase Inc.の登録商標です。言及されている他のすべての企業および製品名は、識別目的でのみ使用されており、それぞれの所有者の商標である可能性があります。Oracle Corporation本社:500 Oracle Parkway, Redwood Shores, CA 94065 U.S.A.