ヘッダーをスキップ
Oracle® Databaseプラットフォーム共通日本語README
12cリリース1 (12.1)
B71333-12
  目次
目次

前
 
 

Oracle Provider for OLE DB (OraOLEDB)

原典情報: <ORACLE_HOME>/relnotes/readmes/README_oledb.htm


インストレーション・ガイドおよびリリース・ノート

リリース12.1.0.1.0 Production

2013年1月

Copyright (c) Oracle Corporation 2013

このドキュメントには、Oracle Provider for OLE DBのドキュメントの補足情報を記載しています。

 

インストールおよび設定に関する注意事項

Oracle Provider for OLE DB (OraOLEDB)プロバイダはCOMコンポーネントであり、1つのマシンで同時にアクティブにできるのは、1つのバージョンのみです。

注意: OUIでのインストール時、Oracle 12cクライアントをまだインストールしていない場合は、「使用可能な製品コンポーネント」画面でOracle Instant Clientのチェックを外さないでください。そうしないと、インストールはエラーを表示して失敗し、その後は製品が正常に動作しなくなります。


Oracle Technology Network

Oracle Provider for OLE DBのサンプル・コード、最新のパッチおよびその他の技術情報については、http://otn.oracle.com/tech/windows/ole_db/を参照してください。 

 

ヒント、制限事項および既知の問題

パフォーマンス

 

* パフォーマンスを向上させるため、LONG/LONG RAW列にADOメソッドAppendChunkを使用しないでください。かわりに、ADOのAddNewまたはUpdateメソッドを使用して、LONG/LONG RAW列全体を挿入または更新します。

  

* OraOLEDBドライバで、オプティマイザ・ヒント構文として/*+ ... */を使用します。ヒント構文--+ ...は、現在サポートされていません。

OLE DB .NET Data Providerでサポート対象外のパラメータ型

 

* MicrosoftのOLE DB .NET Data Providerに関する既知の制限のため、Providerでは、OLE DB .NET Data ProviderでLongVarChar、LongVarWChar、LongVarBinary、BSTR IN/OUTおよびOUTパラメータ型をサポートしません。

  

サポート対象外のデータ型

 

* 信頼できるOracleデータ型MLSLABELは、OraOLEDBドライバでサポートされません。

* Providerでは、現在オブジェクト・データ型をサポートされません。

LOBデータ型

 

* 現在、一度に複数の行でLOBを更新すると、コマンド・オブジェクトでエラーが発生します。

  

次に例を示します。

UPDATE SomeTable SET LobCol = ?WHERE ...

UPDATE文が表内の複数の行に影響する場合、エラーが発生します。この制限はLOB (BLOB/CLOB)に限定されており、LONG (LONG/LONG RAW)は対象外です。

* ほとんどのLOB書込み(INSERTおよびUPDATE)操作では、プロバイダ内の複数の書込み操作を伴うため、こうした操作に対してトランザクションを使用可能にすることをお薦めします。トランザクションを使用可能にすると、なんらかの障害が発生した場合に、コンシューマが書込み操作全体をロールバックできます。これは、コマンド・オブジェクトまたはレコードセット・オブジェクトからLOBを書き込む場合にお薦めします。

DBLINK

 

Oracle Databaseリンクが含まれる問合せを使用した行セットの作成を使用可能にするには、接続文字列属性DistribTxを使用不可にする必要があります。現在、このような行セットは読取り専用に制限されています。

トランザクション

 

* ローカルまたはグローバル・トランザクション中は、コマンド・インタフェースを使用してSQLのCOMMIT、ROLLBACKまたはSAVEPOINTを実行しないでください。行セットのデータの整合性に影響を及ぼす可能性があります。この明示的なトランザクション・モードでのDDLの実行(CREATE TABLE、ALTER VIEWなど)にも同じことが当てはまります。OracleのDDLでは、データベースに対して暗黙的なコミットが実行されるためです。DDLは、自動コミット・モードでのみ実行してください。

* 自律型トランザクションのサポートを使用可能にするには、接続文字列属性DistribTxを使用不可にする必要があります。この機能を使用すると、コンシューマはCOMMITまたはROLLBACK(あるいはその両方)が含まれるストアド・プロシージャを実行できます。

  

ストアド・プロシージャ内のコミットおよびロールバックは、注意して実行する必要があります。OraOLEDBでは、データがクライアント側でローカルにキャッシュされる行セットに対してトランザクション機能が提供されるため、オープン行セットでストアド・プロシージャ内の明示的なコミットまたはロールバックを実行すると、行セットがデータベースと同期しなくなる可能性があります。このような場合、すべてのコミットおよびロールバック(中断)をクライアント側から実行する必要があります(con.Commitまたはcon.Abort)。例外は、ユーザーがストアド・プロシージャで自律型トランザクションを使用している場合です。これを使用することで、ストアド・プロシージャ内のトランザクションはメインのトランザクションから分離されるため、ローカライズされたコミットおよび中断が可能になります。

  

自律型トランザクションの詳細は、Oracle12cのアドバンスト・アプリケーション開発者ガイドおよびPL/SQL言語リファレンスを参照してください。

ストアド・プロシージャ

 

オーバーロードされたPL/SQLストアド・プロシージャおよびファンクションの場合、最初にオーバーロードされたストアド・プロシージャまたはファンクションについてのみ、PROCEDURE_PARAMETERSスキーマの行セットによりパラメータ情報が戻されます。これは、現在、OLE DB仕様にオーバーロードされたプロシージャおよびファンクションのプロビジョニングが含まれないためです。

大/小文字の区別

 

現在、OraOLEDBでは、スキーマ行セット制限で指定されたオブジェクトの大/小文字が、データベース内のオブジェクトとまったく同じである必要があります。つまり、表EMPにアクセスするためにempを渡すことはサポートされません。

次に例を示します。

  Dim restrictions As Variant

  ...

  ' Schemarowset contains table EMP owned by SCOTT

  restrictions = Array(Empty, "SCOTT", "EMP", Empty)

  Set objRst = objCon.OpenSchema(adSchemaTables, restrictions)

  ...

  ' Schemarowset created with no rows

  restrictions = Array(Empty, "scott", "emp", Empty)

  Set objRst = objCon.OpenSchema(adSchemaTables, restrictions)

  ...

Microsoft Visual Basic 6.0の注意事項

 

Microsoft ActiveX Data ObjectsライブラリおよびMicrosoft ActiveX Data Objects Recordsetライブラリは、プロジェクト参照として含める必要があります。

Microsoft Visual C++ 6.0の注意事項

 

OraOLEDB.hは、VC++プロジェクト内の関連する.cppファイルに含める必要があります。また、このプロジェクトのいずれかの.cppファイルに#define DBINITCONSTANTSを追加する必要があります。