Oracle ODBC
Driver 10.1.0.2.0
説明
Oracle ODBC Driverは、Microsoft ODBC(Open Database Connectivity)APIを実装する Microsoft Windows XP、Windows 2000、Windows NTおよびWindows 98アプリケーションから Oracleデータベースへの読込みおよび書込みを可能にします。
ODBC対応のアプリケーションを使用するには、Oracle ODBC Driver の他に、次のソフトウェアが必要です。
- Oracle Netリリース10.1.0.2.0
- クライアント側のネットワーク・トランスポート
- Oracle Server
新機能
ODBC 10.1.0.2.0
-
パラメータ・マーカーを持つINSERT/UPDATE文のNCHAR列のサポートを追加しました。
以前のドライバは列がNCHAR型であることを認識できませんでした。そのため、OCIレベルでのバインディング時に適切な属性を設定できませんでした。
また、NCHAR列のサポートを追加したことにより、SQLDescribeParamコールはINSERT/UPDATE文内のパラメータ情報を返すことが可能となりました(その他の種類
の文では返すことができません)。
ODBC
9.2.0.4.0
- フェイルオーバー・イベント通知を受け取るための、コールバック・ルーチンを登録する機能を追加しました。
-
Microsoft Transaction Server (MTS) データソース構成オプションのデフォルト値を「MTS無効」に変更しました。データソース構成フォーム内のこのオプションに対するチェックボックスはデフォルトでチェックされています。MTSサポートを有効にすると、
たとえMTSを使用していなくてもデータベース・リンクと接続フェイルオーバーで問題が発生します。このデフォルト値を無効とすることで、問題の発生が減少します。この変更はODBCドライバのオンライン・ヘルプには反映されていません。
ヘルプは次リリースで修正されます。
ODBC 9.2.0.3.0
- SQLDescribeParamサポートを無効にするデータソース構成オプションを追加しました。
- SQL文内の無効な制御文字は、Oracleデータベースに渡される前にODBCドライバによって常に削除されます。
- オンライン・ヘルプをHTMLベースに変更しました。
-
ドライバのデフォルトの動作をSQL文から無効な制御文字を取り除くよう変更しました。oraodbc.iniファイルに存在していたRemoveControlCharsオプション
を削除しました。このオプションは不要です。
ODBC 9.2.0.2.0
- データ・フェッチの性能を向上させるため、インターナル・プリフェッチ・キャッシュを実装しました。特に、一度に一行をフェッチするアプリケーションに有効です。キャッシュ・サイズはデータソース構成のオプションです。
- 「プリフェッチ数」データソース構成オプションを「フェッチ・バッファ・サイズ」に変更しました。「フェッチ・バッファ・サイズ」オプションは、インターナル・プリフェッチ・キャッシュのサイズを指定します。デフォルトは、64,000バイトです。
- データソース構成オプションに、「数値の設定」を追加しました。このオプションでは、文字列としてバインドされた数値データの受け渡しで、どの数値設定を使用するか指定します。このオプションでは、以下の設定を選択します。
・OracleのNLS設定(デフォルトの設定)
・Microsoftの地域設定(Oracle OLE DBドライバの動作と合わせ相互運用性を向上)
・US設定(英語環境以外でMS AccessまたはDAOを使用する際に必要です)
- SQL TIMESTAMPデータ・タイプのサポートを追加しました。このサポートは、Oracle
9.0.1以上のクライアントおよびOracle
9.0.1以上のサーバーのみです。
- 無効な制御文字が常にSQL文から削除されるようドライバのデフォルトの動作を変更しました。oraodbc.iniファイルのRemoveControlCharsオプションは不要なため、無効になりました。
ODBC 9.0.1.3.0
- 次の接続構文が使用できます。
<username>/<password>
as sysdba
<username>/<password>
as sysoper
- また、"as sysdba"および"as sysoper"の部分は、パスワード・フィールドに含めることもできます。
- ステートメント属性SQL_ATTR_RETRIEVE_DATAが使用できます。
ODBC 9.0.1.2.0
- ログオン時のユーザー名に <username>/<password> 構文が使用できます。
ODBC 8.1.7.4.0
- ODBC
ドライバは、Oracle 8.1.6 以降のデータベースに接続する際、 SQLGetInfoコールのSQL_SQL92_VALUE_EXPRESSIONSに対してSQL_SVE_CASE を戻します。
- BOOKMARKおよびSQLBulkOperationsルーチンによる、フェッチおよび位置サポートを追加しました。これによりADOのRecordcountプロパティは、-1の代わりに結果セットのレコード数を戻すようになります。
- "SQL_WCHAR
強制サポート"が使用可能にされると、SQLColumnsおよびSQLProcedureColumns関数は文字列カラムを、SQL_WCHAR、SQL_WVARCHAR または SQL_WLONGVARCHAR で戻します。
ODBC 8.1.7.3.0
- 構成画面に接続およびステートメント属性 SQL_ATTR_METADATA_ID のデフォルト値を追加しました。通常、デフォルトはSQL_FALSEです。このデータソース・オプションがチェックされると、接続時のデフォルトがSQL_TRUEに設定されます。これらの値はODBC仕様にリストされています。明確に接続後に属性値を変更するアプリケーションでは、このオプションにより影響を受けることなくコールは期待通りに終了します。このオプションは、「ODBC Oracleドライバ構成」ダイアログ・ボックス画面のWorkaroundsタブ内「METADATA IDデフォルトにSQL_TRUEをセット」で設定します。
- SQLGetData拡張の SQL_GD_ANY_COLUMN、SQL_GD_ANY_ORDER および SQL_GD_BOUND サポートを利用するためのオプションが構成画面に追加されました。このオプションを使用すると、構成画面で"LONG列の強制取り出し"オプションが選択されていない場合でも、"LONG列の強制取り出し"が有効になります。"LONG列の強制取り出し"オプションに起因する動作はSQLGetData拡張オプションにも当てはまります。
ODBC 8.1.7.2.0
- ODBCのインストールは複数Oracleホームがサポートされます。ODBCドライバーは、インストールされるOracleホーム名により一意に識別されます。たとえば、"OraHome81" というOracleホームにインストールされるODBCドライバ名は、"Oracle in OraHome81"になります。ODBCドライバは、以前は常に "Oracle ODBC Driver" としてインストールされていました。インストールされたODBCドライバの一覧は、ODBC データソースアドミニストレータ ユーティリティの "ドライバ" タブで参照できます。既存のOracle8.1.7ホームでODBC 8.1.7.2.0ドライバにアップデートする場合、既存のOracle ODBCドライバのデータソース定義は、新しくインストールするドライバ名に変更されます。
- Oracle8
ODBCドライバ構成画面に「接続テスト」ボタンを追加しました。これにより、以前のODBCドライバに付随していた "ODBC Test Utility" は、提供されなくなりました。
- SQL_ATTR_METADATA_ID属性のサポートを追加しました。この属性はODBC3.0の機能で、ODBCカタログ関数の引数の大小文字の扱いを指定するのに使用されます。例えば、SQL_ATTR_METADATA_IDがSQL_TRUE に設定された場合、SQLTables関数のTableName引数では、大小文字は同一に扱われます。
Microsoft ODBC 仕様のデフォルト値は、SQL_FALSEです(大小文字が区別されます)。SQL_ATTR_METADATA_IDがサポートされる以前は、二重引用符で括られていない場合、すべてのカタログ関数の引数で、大小文字の区別が行われていませんでした。大小文字を区別しないデータベースに格納されているオブジェクトに対して大小文字を区別する引数を使用している既存のアプリケーションは修正が必要な場合があります。たとえば、"{call proc1(?)}" 関数コールを使用する場合、'proc1'が'PROC1'としてデータベースに格納されている場合でも以前は正常に動作していました。現在は、'proc1'として格納されているかSQL_ATTR_METADATA_ID にSQL_TRUEをセットしてある場合、同様に関数が正常にコールされます。
- SQL_DBMS_NAMEのSQLGetInfoリターン値を "Oracle" に変更しました。以前は
"Oracle8" がリターンされていました。
ODBC 8.1.7.1.0
- ODBC データソース構成インターフェースを再編成しました。システム上の tnsname.ora のTNS名検索を統合しました。
- Microsoft EXEC構文サポートの追加。この機能が有効な場合、Oracle8データベース・サーバーによって処理される前にEXEC文で使用されるプロシージャ(または、ファンクション)コールは、その同等なOracle プロシージャ(または、ファンクション)コールに解釈されます。
- Microsoft EXEC構文サポートを有効または無効にするためのデータソース構成オプションの追加。
- Batch Autocommitモード用データソース構成オプションの追加。
- Oracle8 ODBCドライバーのエラー発生時のデフォルト動作は、トランザクションをロールバックします。Oracle7 ODBCドライバーのデフォルト動作は、エラー発生個所までのトランザクションをコミットします。
このオプションは、Oracle7
ODBCドライバーとの互換性のため、データソースを構成することができるよう追加されました。エラー無しの行を全てコミットするオプションが追加されましたが Oracle8i Client でのみ利用可能です。
- SQLDescribeCol で SQL_CHAR列 を 'SQL_WCHAR'、SQL_VARCHAR列を 'SQL_WVARCHAR' および SQL_LONGVARCHAR列 を'SQL_WLONGVARCHAR' データ型で返すデータソース構成オプションの追加。このオプションを有効にすると UNICODE ADOアプリケーションが可能になります。ADOアプリケーションは、結果列をバインドする方法を決定するために SQLDescribeCol のリターン値を利用します。データベースは、UNICODE型として列を定義する事をサポートしていないため、現在の Oracle ODBCドライバーは 'SQL_W' データ型を返しません。 デフォルトでは、WCHAR への変換サポートは無効になっています。
- カタログ関数のSQLColumns、SQLPrimaryKeysおよびSQLTablePrivilegesの性能を向上させました。
ODBC 8.1.5.5.0
- Oracle8 ODBC DriverのMicrosoft ODBC準拠レベルは3.51になりました。
- Oracle8 ODBC DriverはUNICODEをサポートします。UNICODEサポートは、OCI(Oracleコール・インタフェース)によって使用可能となるUNICODE機能に依存しています。OCI 8.1によって、SQLBindParameterによるUNICODEデータのデータベースへの入力と、SQLBindColもしくはSQLGetDataでのUNICODEデータのデータベースからの取得がサポートされます。
- Microsoft Transaction Server (MTS) サポートを無効にするためのデータソース構成オプションが追加されました。デフォルトではMTSサポートは有効です。
- ユーザーが期限切れのパスワードでデータベースに接続しようとすると、ODBCドライバはパスワード変更を要求し、パスワードが変更されてからデータベースに接続します。SQL_DRIVER_NOPROMPTパラメータを指定してSQLDriverConnectで接続を試みると、ドライバーはパスワード変更を要求せず、かわりにパスワードが期限切れになったというエラーを表示して、接続試行を終了します。
- MicrosoftのODBC用再配布可能コンポーネントは、Oracle ODBC Driverインストール時にはインストールされなくなります。再配布可能コンポーネントの最新版は、MicrosoftのUniversal Data Access WEBサイト
(http://www.microsoft.com/japan/developer/data/default.asp)から入手することが可能です。
- 今までのバージョンでsqora.wriという名前だったファイルは、ODBCRelnotes.wriという名前に変更されました。
ODBC 8.1.5.4.0
- SQL_GD_BLOCK (SQL_GETDATA_EXTENSIONS) サポートの追加
- DSN用レジストリ中にPasswordエントリが可能になり、ユーザーがパスワードを入力するかわりに、ドライバがこのレジストリを読込んでパスワードを取得することができます。これはOracle7 ODBCドライバとの互換のために実装されています。レジストリにパスワードを格納するツールは提供されませんので、ご注意ください。
- SQL_CLOSEやSQL_DROPパラメータが付いたSQLFreeStmtや、SQLCloseCursorや、ステートメント・ハンドルに対するSQLFreeHandleコールで、OCIカーソルを強制クローズするオプションが可能になりました。このオプションのデフォルトでは、上記の状況ではOCIカーソルを強制クローズしません。OCIカーソルを強制クローズするとパフォーマンスに影響しますが、一方で意図的に強制クローズする必要がある場合もありますので、このオプションが追加されました。
ODBC 8.1.5.3.0
- プロシージャ呼出しからの結果セットを戻すインプリメンテーションが拡張されました。カーソル参照パラメータは、プロシージャ呼出しで省略することが可能です。これは他のODBCの実装と一貫性および互換性を持つようにしたためです。
機能性
Oracle ODBC Driverは、Microsoft ODBCバージョン3.52仕様に準拠しています。
必要なハードウェア
Oracle ODBC Driverを使用するには、Windows XP、Windows 2000、Windows NTまたはWindows 98でサポートされるシステム構成が必要です。次の要件も含まれます。
最低32MBのシステム・メモリー
最低3MBの空きディスク領域
必要なソフトウェア
Microsoft Windows XP、Windows 2000、Windows NT 4.0またはWindows 98オペレーティング・システム
Oracle Net Client R10.1.0.2.0
Oracle 10.1.0.2.0に付属のOracle Universal Installer
サーバーに必要なソフトウェア
Oracle ODBC Driverを介してODBC対応アプリケーションをサポートするために必要なサーバー・ソフトウェアを次に示します。
Oracle Server 8.1.7以上
リリース・ノート
1. インストール後の処理
Oracle ODBC Driverのデータソースを構成するには、Microsoft ODBCデータソース・アドミニストレータを使用します。詳細については、Oracle
ODBC Driverヘルプ・ファイルの「データソースを構成する」の項を参照してください。
2. 新機能
詳細については、Oracle
ODBC Driverヘルプ・ファイルの新機能の説明を参照してください。
3. データ変換
Oracle ODBC Driverは、REALデータ型とDOUBLEデータ型の操作および表示について、Microsoft ODBC 3.00 SDK(Software Development Kit)のガイドラインに準拠しています。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はデータが変更されたと認識するためです。Microsoft Accessが123.99910293821という切り捨てられた数を選択条件にすると、Oracleデータベースには該当する行が存在しないため、行の更新ができません。Oracleデータベースには、元の値である123.9991029382123が格納されている行しかありません。
Microsoft Queryの場合は不正に表示されます。
たとえば、次のような倍精度の値を表示するとします。
-1.123400000000000E-001
Microsoft
Queryでは次のように表示されます。
-1.123400000000000E-00
Microsoft Queryでは、SQLColAttributesがコールされ、表示サイズ22が返されます。ODBC SDKで定義されている倍精度データの表示書式は次のとおりです。
合計長22
(符号1、数値15、小数点1、文字E、符号1、数値3)
上記の例では、精度に15桁ではなく16桁の数値があるため、合計で23桁の文字列になっています。データが正しく表示されないのはこのためです。
一般的に、ODBCで精度の問題を避けるには、Oracleデータベースに格納されるDOUBLEデータ型の値が『Microsoft ODBCプログラマーズリファレンス & SDK』に記載されている仕様に従っていることを確認します。
4. SQLDescribeParam
SQLDescribeParamが使用可能となっていますが、Oracleデータベースは、入力パラメータに関する情報を返すことはサポートしていません。ODBCドライバは入力パラメータに対して以下の値を返します。
DataTypePtr =
SQL_VARCHAR
ParameterSizePtr =
999
DecimalDigitsPtr =
0
NullablePtr =
SQL_NULLABLE
(#556749)
5.
Oracle ODBC Driverの既知のソフトウェア問題
- データベース・サーバーがWindows NT上で実行されている場合、SQLSetStmtOptionのSQL_QUERY_TIMEOUTは動作しません。
- Windows NTデータベース・サーバー上で行われている文の実行をキャンセルする場合、SQLCancel
は動作しません。