Oracle ODBC Driver
原典情報: %ORACLE_HOME%\odbc\html\ODBCRelnotesUS.htm
目次
1 説明
2 新機能
3 テスト構成
4 機能
5 ソフトウェアのサポート
6 必要なソフトウェア
7 必要なハードウェア
8 サーバーのソフトウェア要件
9 リリース・ノート
1 説明
Oracle ODBC Driverを使用すると、Microsoft Open Database Connectivity(ODBC)APIを実装するMicrosoft Windows XP、Windows 2000、Windows NTおよびWindows 98アプリケーションで、Oracleデータベースの読取りと書込みを実行できます。
Oracle ODBC Driver配布キットには、Dynamic Link Library、Windowsヘルプ・ファイル、ライセンスのコピーおよび製品の説明が含まれています。ODBC対応のアプリケーションを使用するには、Oracle ODBC Driverの他に次のソフトウェアが必要です。
- Oracle Netリリース10.1.0.2.0
- クライアントでのネットワーク・トランスポート
- Oracle Database
2 新機能
ODBC 10.1.0.2.0
- パラメータ・マーカーを含むINSERT文およびUPDATE文でのNCHAR列がサポートされるようになりました。(Bug#2827132)以前は、列がNCHAR型であることをドライバが認識せず、OCIレベルでバインドするときに適切な属性を設定できませんでした。この影響として、SQLDescribeParamコールによってINSERT文やUPDATE文のパラメータに関して役立つ情報が返されるようになりました(他の文には該当しません)。
ODBC 9.2.0.4.0
- 接続フェイルオーバー・イベントの通知を受け取るためにコールバック・ルーチンを登録する機能が追加されました。
- データ・ソース構成オプションの「Microsoft Transaction Server(MTS)サポート」を無効にするデフォルト値が変更されました。データ・ソース構成フォームのこのオプションのチェック・ボックスには、デフォルトでチェック・マークが付くようになります。MTSサポートを有効にすることで、MTSが使用されていなくてもDBLINKおよび接続フェイルオーバーで問題が発生することがあります。デフォルト値を無効に変更すると、サポート・コールが減少します。この変更は、ODBCドライバのオンライン・ドキュメント・ファイルには反映されていません。次のリリースのドキュメントで訂正される予定です。
ODBC 9.2.0.3.0
- SQLDescribeParamサポートを無効にするデータ・ソース構成オプションが追加されました。(Bug#2485192)
- oraodbc.iniファイルのRemoveControlChars機能が廃止されました。ODBCドライバは、常にSQL文から無効な制御文字を省いてOracleデータベースに渡すようになります。
- オンライン・ヘルプがHTML形式に変更されました。
- ドライバのデフォルト動作が変更され、常にSQL文から無効な制御文字を削除するようになりました。oraodbc.iniファイルに含まれていたRemoveControlCharsオプションは廃止されました。このオプションは不要です。(Bug#2543632)
ODBC 9.2.0.2.0
- データのフェッチのパフォーマンスを向上させる、内部プリフェッチ・キャッシュが実装されました。一度に1行ずつフェッチするアプリケーションで特に効果があります。キャッシュのサイズはデータ・ソース構成オプションで指定します。
- 「プリフェッチ数」データ・ソース構成オプションは廃止され、かわりに「フェッチ・バッファ・サイズ」オプションが使用されます。「フェッチ・バッファ・サイズ」オプションを使用して、内部プリフェッチ・キャッシュのサイズを指定します。デフォルトは64,000バイトです。
- Unicode SQL文字列をデータベース・サーバーに送ることができ、表にUnicodeデータを含む列を定義できます。ドライバでは、SQL_WCHAR、SQL_WVARCHARおよびSQL_WLONGVARCHARのSQLデータ型がサポートされるようになりました。
- 「数値の設定」データ・ソース構成オプションが追加されました。このオプションを使用して、文字列としてバインドされている数値データを取得したり返したりするときに使用される数値設定を選択します。このオプションでは、ユーザーが、Oracle NLS設定(デフォルト設定)、Microsoftリージョン設定(相互運用性を高めるためにOracle OLE DBドライバの動作をミラー化する方法を提供する)、US数値設定(US以外の環境でMS AccessまたはDAOを使用するときに必要)を選択できます。(Bug#2148838など)
- SQL TIMESTAMPデータ型がサポートされるようになりました。このサポートはOracle9iリリース1(9.0.1)以上のクライアントで有効になります。Oracle9iリリース1(9.0.1)以上のデータベースが必要です。
ODBC 9.0.1.3.0
- 接続構文の<username>/<password> as sysdbaおよび<username>/<password> as sysoperがサポートされるようになりました。as sysdba文字列とas sysoper文字列はパスワード・フィールドにも指定できます。(Bug#2114033)
- SQL_ATTR_RETRIEVE_DATA文属性がサポートされるようになりました。(Bug#2165706)
ODBC 9.0.1.2.0
- ログオンするときにユーザー名を指定する<username>/<password>構文がサポートされるようになりました。(Bug#1094170に対応)
ODBC 8.1.7.4.0
- Oracle8iリリース8.1.6以上のデータベースに接続すると、ODBCドライバは、SQL_SQL92_VALUE_EXPRESSIONSについてSQLGetInfoコールに応答してSQL_SVE_CASEを返します。(Bug#1807444に対応)
- BOOKMARKおよびSQLBulkOperationsルーチンによるフェッチと位置付けがサポートされるようになりました。その他の影響としては、ADOのRecordcountプロパティが、-1ではなく結果セットのレコード数を返すようになりました。(Bug#898817)
- 「SQL_WCHAR強制サポート」データ・ソース構成オプションを有効にすると、SQLColumnsおよびSQLProcedureColumns関数によって、文字の列がSQL_WCHAR、SQL_WVARCHARまたはSQL_WLONGVARCHARとして報告されます。(Bug#1735893)
ODBC 8.1.7.3.0
- SQL_ATTR_METADATA_IDの接続と文の属性のデフォルト値をユーザーが変更できるオプションが構成画面に追加されました。通常、デフォルトはSQL_FALSEです。このデータ・ソース・オプションをオンにすると、接続時のデフォルトがSQL_TRUEになります。これらの値の意味はODBCの仕様に示されているため、ここでは説明しません。接続後に属性の値を変更するためにアプリケーションが実行するコールは、このオプションの影響を受けず、所定の動作を実行します。このオプションは、構成画面の「Workarounds」セクションに表示され、「METADATA IDデフォルトにSQL_TRUEをセット」という名前が付きます。(Bug#1671529に対応)
- SQLGetData拡張機能であるSQL_GD_ANY_COLUMN、SQL_GD_ANY_ORDERおよびSQL_GD_BOUNDのサポートをユーザーが有効にできるオプションが構成画面に追加されました。(SQL_GD_BLOCKは常にサポートされます。)このオプションを有効にすると、「Long列強制取り出し」オプションが構成画面で選択されていなくても、必然的に「Long列強制取り出し」オプションが暗黙に有効になります。つまり、「Long列強制取り出し」オプションに関連するすべての動作は、SQLGetData拡張機能オプションにも適用されます。
ODBC 8.1.7.2.0
- ODBCインストールで複数のOracleホームがサポートされるようになりました。ODBCドライバの各インストールは、インストールされているOracleホームの名前で一意に識別されます。たとえば、Oracleホームの名前がOraHome81であればODBCドライバはOraHome81としてインストールされます。Oracle ODBC Driverは以前は常にOracle ODBC Driverとしてインストールされていました。インストールされているODBCドライバのリストは、ODBCアドミニストレータ・ユーティリティの「ドライバ」タブで確認できます。
既存のOracle8iリリース8.1.7ホームをODBC 8.1.7.2.0ドライバにアップグレードすると、Oracle ODBC Driverの既存のデータ・ソース定義が新たにインストールされたドライバの名前に変換されます。
- SQL_ATTR_METADATA_ID属性がサポートされるようになりました(Bug#1373064)。この属性はODBC 3.0の機能です。ODBCカタログ関数の引数での大文字/小文字の区別を指定するために使用されます。たとえば、SQL_ATTR_METADATA_IDをSQL_TRUEに設定すると、SQLTables関数のTableName引数で大文字と小文字は区別されません。Microsoft ODBC仕様で定義されているデフォルト値はSQL_FALSE(大文字と小文字を区別する)です。
SQL_ATTR_METADATA_IDがサポートされる以前は、カタログ関数の引数はすべて二重引用符で囲まないかぎり大文字と小文字が区別されませんでした。大文字と小文字の区別なしでデータベースに格納されているオブジェクトに対して、既存のアプリケーションが大文字と小文字を区別する引数を渡す場合は、アプリケーションを修正する必要があります。たとえば、proc1がデータベースにPROC1として格納されている場合、以前は{call proc1(?)}コールを使用すれば正常に処理されました。現在、同じコールが正常に機能するのは、プロシージャ名がデータベースにproc1として格納されている場合か、SQL_ATTR_METADATA_IDがSQL_TRUEに設定されている場合です。
- SQL_DBMS_NAMEのSQLGetInfo戻り値がOracleになるように変更されました。以前の戻り値はOracle8でした。(Bug#1494101)
- 「接続テスト」ボタンがODBCデータ・ソース構成画面に追加されました。この機能が追加されたことで、ODBCドライバに含まれていたODBCテスト・ユーティリティが廃止されます。ODBCテスト・ユーティリティはODBCインストールから削除されています。
ODBC 8.1.7.1.0
- ODBCデータ・ソース構成インタフェースが再編成されました。TNS名の選択は、システムにあるtnsname.oraに統合されました。
- Microsoft EXEC構文がサポートされるようになりました。この機能を有効にすると、EXEC文に指定されるプロシージャ(またはファンクション)のコールは、対応するOracleプロシージャ(またはファンクション)のコールに変換されてから、Oracle8データベース・サーバーで処理されます。
- Microsoft EXEC構文のサポートの有効と無効を切り替えるデータ・ソース構成オプションが追加されました。
- バッチ自動コミット・モードに関するデータ・ソース構成オプションが追加されました。1つ以上の行でエラーが発生すると、Oracle8 ODBC Driverのデフォルト動作ではトランザクションがロールバックされます。Oracle7 ODBC Driverのデフォルト動作では、エラーが検出された行までのトランザクションがコミットされます。Oracle7 ODBC Driverとのデータ・ソースの互換性を保つためにこのオプションが追加されました。Oracle8iクライアントのみで使用されるオプションも追加されました。このオプションでは、エラーが発生していないすべての行がコミットされます。
- SQL_CHAR列に対してSQL_WCHARデータ型、SQL_VARCHAR列に対してSQL_WVARCHARデータ型、SQL_LONGVARCHAR列に対してSQL_WLONGVARCHARデータ型を、強制的にSQLDescribeColで返すようにする、データ・ソース構成オプションが追加されました。このオプションを有効にすると、ADOアプリケーションでUnicodeを使用できるようになります。ADOは、SQLDescribeColの戻り値を使用して、結果列をバインドする方法を判別します。現在、Oracle ODBC DriverではSQL_Wのデータ型が返されることはありません。データベースでUnicode型の列の定義がサポートされていないためです。デフォルトでは、WCHAR強制サポートは無効です。
- SQLColumns、SQLPrimaryKeysおよびSQLTablePrivilegesカタログ関数のパフォーマンスが向上しました。
ODBC 8.1.5.5.0
- Oracle8 ODBC DriverのMicrosoft ODBC準拠レベルが3.51になりました。
- Oracle8 ODBC DriverでUnicodeがサポートされるようになりました。Unicodeのサポートは、Oracle Call Interface(OCI)で使用できるUnicode機能によって異なります。OCI 8.1.5は、SQLBindParameterを介したデータベースへのUnicodeデータの入力、およびSQLBindColまたはSQLGetDataを介したデータベースからのUnicodeデータの取得をサポートします。
- Microsoft Transaction Server(MTS)のサポートを無効にするデータ・ソース構成オプションが追加されました。デフォルトではMTSサポートは有効です。
- ユーザーが期限切れのパスワードを使用してデータベースに接続しようとすると、パスワードを変更するようにドライバから要求されます。パスワードを変更すると、ドライバによってユーザーがデータベースに接続されます。ユーザーがSQL_DRIVER_NOPROMPTパラメータを含むSQLDriverConnectを使用して接続しようとすると、ドライバによるパスワード変更の要求はありません。パスワードが期限切れであることを知らせるエラーが発生して接続が失敗します。
- ODBC対応のMicrosoft Redistributableコンポーネントがインストールから削除されました。このコンポーネントはオペレーティング・システムの一部としてインストールされます。これらのコンポーネントの最新バージョンは、Microsoft製品によってインストールされている場合があります。または、Universal Data AccessのWebサイト(http://www.microsoft.com/data/)から入手できます。
- ファイルsqora.wriの名前がODBCRelnotes.wriに変更されました。
ODBC 8.1.5.4.0
- Microsoft Transaction Server(MTS)のサポートはORAMTSパッチ8.1.5.0.1に依存します。ORAMTSパッチのODBCサポートは、以前はODBC 8.1.5.3a.0パッチ・キットによって有効になりました。
- SQL_GD_BLOCK(SQL_GETDATA_EXTENSIONS)がサポートされるようになりました。
- レジストリ・エントリ(パスワード)がDSNのレジストリに設定できるようになりました。ドライバは、ユーザーにパスワードを要求するかわりにこのエントリを読み取ってパスワードを取得します。これは、Oracle7 ODBC Driverとの互換性を保つために実装されました。パスワードをレジストリに格納するためのツールは提供していません。
- SQL_CLOSEパラメータまたはSQL_DROPパラメータを使用するSQLFreeStmtへのコール、SQLCloseCursorへのコール、または文ハンドルでのSQLFreeHandleへのコールを行うときに、OCIカーソルを強制的に閉じるオプションをユーザーが使用できるようになりました。このオプションのデフォルトでは、前述の状況においてOCIカーソルは強制的に閉じられません。場合によってはこのような状況でOCIカーソルを強制的に閉じる必要がありますが、特に必要でないときに強制的に閉じるとパフォーマンスが低下する可能性があるため、このオプションが追加されました。
ODBC 8.1.5.3.0
- プロシージャ・コールの結果セットを返すための実装が強化されました。参照カーソル・パラメータはプロシージャ・コールから省略できます。これは、他のODBC実装との一貫性および互換性を保つために行われました。
ODBC 8.1.5.0.0
- Microsoft Transaction Server(MTS)のサポート。最小のOracle8iリリース8.1.5クライアントが必要です。
ODBC 8.0.5.5.0
- スクロール可能カーソルおよび更新可能カーソルのサポート
ODBC 8.0.5.4.0
ODBC 8.0.5.3.0
- SQL_ATTR_QUERY_TIMEOUTのサポートの有効と無効を切り替えるオプション
ODBC 8.0.5.1.0
- LOBのサポート(最小のOracle8リリース8.0.5クライアントが必要)
- 接続プーリング
ODBC 8.0.5
- プロシージャ・コールから結果セットを返します。
- ODBCドライバは、FailSafe ServerおよびParallel Serverによって接続フェイルオーバー機能をサポートします。
ODBC 8.0.4.0.2
- SQLDescribeParamのサポート
- SQLBrowseConnectのサポート
ODBC 8.0.4.0.0
3 テスト構成
次の表に、ODBCのリリースの動作が保証されたテスト構成をまとめています。この表は、ODBCドライバの動作が確認されている環境を示すことを目的としています。サポートされているすべての環境を表すリストではありません。
ODBCの バージョン | データベースの バージョン | オペレーティング・ システム | MDAC | サード・パーティ 製品 |
10.1.0.2.0 | 10.1.0.2.0 | Windows XP SP2 | 2.70.9001.0 | MSOffice XP |
| 9.2.0.2.0 | | | MSOffice 2000 |
| 9.0.1.4.0 | | | Visual Basic 6.0 |
4 機能
Oracle ODBC Driverは、バージョン3.52のMicrosoft ODBC仕様に準拠しています。
5 ソフトウェアのサポート
Oracle ODBC Driverに関してサポートを受ける場合、オラクル社カスタマ・サポート・センターに連絡してください。オラクル社では、サポート契約がない場合にはOracle ODBC Driverのサポートを提供していません。
6 必要なハードウェア
Oracle ODBC Driverでは、Windows XP、Windows 2000、Windows NTまたはWindows 98でサポートされる次のシステム構成が必要です。
- 32MB以上のシステム・メモリー
- 3MB以上の空きディスク容量
7 必要なソフトウェア
- Microsoft Windows XP、Windows 2000、Windows NT 4.0またはWindows 98オペレーティング・システム
- Oracle Netクライアント10.1.0.2.0
- Oracle Universal Installer(Oracle 10gリリース1(10.1.0.2.0)に含まれる)
8 サーバーのソフトウェア要件
この項では、Oracle ODBC DriverでODBC対応のアプリケーションをサポートするために必要なサーバー・ソフトウェアを示します。
Oracle Database8iリリース8.1.7以上
9 リリース・ノート
9.1 インストール後
Microsoft ODBCアドミニストレータを使用してOracle ODBC Driverデータ・ソースを構成します。Oracle ODBC Driverヘルプ・ファイルのデータ・ソースの構成に関する項を参照してください。
9.2 新機能
Oracle ODBC Driverヘルプ・ファイルの新機能に関する項を参照してください。
9.3 データ変換
Oracle ODBC Driverでは、Microsoft ODBC 3.00 Software Development Kit(SDK)のガイドラインに従って、realデータ型およびdoubleデータ型の操作と表示を行います。SQL_DOUBLEおよびSQL_FLOATの精度(使用される最大桁数)は15です。
double値がOracleデータベースに格納されている場合、これらのデータ型の精度はODBCが現在サポートしている精度を大きく上回ることがあります。最終的な結果では精度が低くなります。次に例を示します。
デフォルトの精度でOracleに定義されているfloatデータ型が、次の数値だとします。
123.9991029382123
これがWindowsプラットフォームに変換されると、数値の精度が次のように低くなります。
123.999102938212
このように精度が低くなると、アプリケーションによって異なる動作が発生します。Microsoft Accessでは、ユーザーがデータを更新できなくなります。Oracleの値が123.9991029382123で、Microsoft Accessの数値123.99910293821はオリジナルだが切り捨てられているため、Microsoft Accessはデータが変更されたと認識します。切捨てが行われた数値123.99910293821を選択条件として使用すると、Microsoft Accessでは行を更新できません。該当する行がOracleデータベースに存在しないためです。Oracleデータベースには123.9991029382123を含むオリジナルの行のみが存在します。
Microsoft Queryでは表示が不正確になります。次に、double precision数値の表示例を示します。
-1.123400000000000E-001
Microsoft Queryでは、この数値は次のように表示されます。
-1.123400000000000E-00
Microsoft QueryがSQLColAttributesをコールすると、表示サイズとして22が返されます。ODBC SDKでは、double precisionデータを表示するために次の書式が定義されています。
Total 22 Length
( a sign,15 digits,a decimal point,the letter E,a sign and 3 digits)
この例では、文字列全体の長さは23で、精度に対応する桁数は15ではなく16です。このためデータが正しく表示されません。
ODBCを使用する際の精度の問題を回避する一般的な方法としては、doubleデータ型でOracleデータベースに格納されているデータを、『Microsoft ODBC Programmer's Reference and SDK Guide』の仕様に準拠させることが必要です。
9.4 Oracle ODBC Driverのソフトウェアの既知の問題
- データベース・サーバーがWindows NTで稼働している場合、SQLSetStmtOption SQL_QUERY_TIMEOUTが機能しません。
- Windows NTのデータベース・サーバーで実行中の文を取り消す場合にSQLCancelが機能しません。
9.5 修正済のソフトウェアの問題
リリース1(10.1.0.2.0)
- ODBCアドミニストレータ・ユーティリティで解析するためにtnsnames.oraファイルの場所を判別するTNS_ADMIN変数がサポートされるようになりました。tnsnames.oraファイルを探すときの優先順位では、TNS_ADMIN環境変数で定義された場所が最初に検索されます。そこで検出されない場合、ドライバはTNS_ADMINという名前のレジストリ文字列値を現在のOracleホームで探し、最後にOracleホームにあるtnsnames.oraファイルを使用します。(Bug#3055714)
- SQLGetDataを使用するときにBLOBが破損する可能性が修正されました。(Bug#3041953)
- コメントの後にさらにコメントがあるSQL文、またはスペースを含まない文字列が引用符に囲まれているSQL文の場合、バインド・パラメータが検出されないという解析の問題が修正されました。(Bug#3038835)
- UPDATE
WHERE CURRENT OFがkeysetカーソルに対して失敗する場合があるという問題が修正されました。(Bug#3038823)
- NULL LOBの挿入に関する問題が修正されました。(Bug#3028525)
- マルチバイト・キャラクタ・セットでエンコードされたデータベースにアクセスするときに、CLOBデータが正しく返されないという問題が修正されました。(Bug#3015481)
- SQLProcedureColumnsによってORA-24345が発生する問題が解決されました。(Bug#2993934)
- SQL_COLUMN_IGNOREが設定されているときのデータのフェッチが修正されました。以前はSQL_COLUMN_IGNOREが設定された列のデータをドライバがフェッチしませんでしたが、現在はSQLBulkOperationsで実行されるフェッチについてのみドライバがデータを無視します。(Bug#2976963)
- forward-onlyカーソルを使用して読取りを行うときに発生するメモリー・リークが修正されました。(Bug#2972233)
- SQL_C_NUMERICデータ型を使用するときにデータ破損が発生する可能性がある問題が修正されました。(Bug#2945992)
- SQLConnectでアクセス違反が発生する可能性がある問題が修正されました。(Bug#2933827)
- タイプがSQL_DROPのSQLFreeStmtおよびLOBデータを含む結果セットに対して発生するメモリー・リークが修正されました。(Bug#2912973)
- 参照カーソルの結果を処理するときにADOレコードセットの最初の列が省略される問題が修正されました。(Bug#2897335)
- タイムスタンプ文字列での小数秒出力の生成が修正されました。TIMESTAMP列の最大精度は9、デフォルト精度は6です。ODBCドライバでは、小数秒9文字を含む文字列が常に生成されていました。このため、ODBCドライバで生成されるタイムスタンプ文字列が予期される値よりも大きくなり、TIMESTAMP列を処理するときにMicrosoft Excelで問題が発生していました。(Bug#2893288)
- プロシージャをコールするときのCHAR出力パラメータのヌル文字での終了が修正されました。(Bug#2885702)
- CLOBが表に含まれるときのDAOによる更新実行の問題が修正されました。以前はORA-24801が発生していました。(Bug#2776568)
- ORA-01460(無意味な変換または実装されていない変換)が発生しないように、OCI_ATTR_MAXDATA_SIZEの設定が修正されました。ドライバでは、INSERT文、UPDATE文およびSELECT文のmaxデータ属性のみが設定されます。(Bug#2226375)