ヘッダーをスキップ

Oracle Databaseプラットフォーム共通日本語README
10g リリース2(10.2)
B19227-09
  目次
目次
 

戻る
戻る
次へ
次へ
 

Oracle Provider for OLE DB

原典情報: %ORACLE_HOME%\product\10.2.0\db_1\oledb\readme.txt



目次

このREADMEでは、Oracle Provider for OLE DBのドキュメントの補足情報を提供します。

重要なインストール情報

バグ修正(10.2.0.2.20)

Oracle Technology Network

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


重要なインストール情報

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

バグ修正(10.2.0.2.20)

4379499 ASP APPLICATION ON WIN2K3 SERVER CAUSES CPU TO MAX OUT WITH 10 USERS
(Windows 2003 Server上のASPアプリケーションが原因で、10個のユーザーでCPUが限界になる)

4518457 RECORDSET FIND METHOD FAILS TO WORK CORRECTLY WITH NUMERIC RECORDS
(RECORDSET FINDメソッドが数値レコードで正常に機能しない)

4637436 ORACLE OLE DB PROVIDER IS NOT RETURNING ERROR MESSAGE UPON DB SHUTDOWN
(DB停止時にOracle OLE DB Providerがエラー・メッセージを返さない)

4737359 ACCESS VIOLATION OCCURS USING ORACLE OLEDB WITH ASP APPLICATION
(Oracle OLEDBをASPアプリケーションとともに使用するとアクセス違反が発生する)

4905051 ORAOLEDB REPORTS PRECISION OF 255 FOR NUMBER WITH NO PRECISION/SCALE
(精度/位取りのない数値に対してORAOLEDBが255の精度を報告する)

5090652 IROWSET->GETNEXTROWS RETURNS DB_S_ENDOFROWSET RATHER THAN E_FAIL
(GetNextRowsがE_FAILでなくDB_S_ENDOFROWSETを返す)

4473586 ORAOLEDB REPORTS OVERFLOW OCI-22053
(OraOLEDBがオーバーフローOCI-22053を報告する)

5197437 RECORDSET.OPEN FAILS TO EXECUTE CASE STATEMENTS USING OLEDB
(Recordset.OpenがOLEDBを使用したCase文の実行に失敗する)

4895608 CREATING A ROWSET FROM A NESTED CASE STMT CAUSES UNHANDLED EXCEPTION
(ネストされたCase文からの行セットの作成で未処理の例外が発生する)

4689576 NUMBER CORRUPTION USING ADO / VB WHEN GREATER THAN 15 DIGITS
(ADO / VBを使用した場合に15桁超の数値が壊れる)

4605256 ORACLE PROVIDER FOR OLEDB THROWING ROW-00001: CANNOT ALLOCATE MEMORY
(Oracle Provider for OLEDBが「ROW-00001: メモリーの割当てができません。」をスローする)

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)。例外は、ユーザーがストアド・プロシージャで自律型トランザクションを使用している場合です。これを使用することで、ストアド・プロシージャ内のトランザクションはメインのトランザクションから分離されるため、ローカライズされたコミットおよび中断が可能になります。自律型トランザクションはOracle8i (8.1.5)にのみ導入されており、それより前のリリースのRDBMSでは使用できません。

    自律型トランザクションの詳細は、Oracle10g の『Oracle Databaseアプリケーション開発者ガイド-基礎編』および『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を追加する必要があります。