OCI for Windowsの使用方法について説明します。
この付録では、Windows 2003、Windows 2000およびWindows XPの各オペレーティング・システムに該当するOCIの機能のみ説明します。Windows NTは、サポート対象外になりました。
この章は、次の項目で構成されています。
OCI for Windowsパッケージには、OCIプログラムをリンクするために必要な追加ライブラリが含まれています。
Oracle Call Interface for Windowsパッケージには、次のものが含まれています。
Oracle Call Interface(OCI)
Required Support Files (RSF)
Oracle Universal Installer
OCIアプリケーションのコンパイル用ヘッダー・ファイル
OCIアプリケーションのリンク用ライブラリ・ファイル
OCIアプリケーションの構築方法を示すサンプル・プログラム
関連項目:
単純なOCIのインストール・オプションは、「OCI Instant Client」を参照してください
OCIは、デフォルトのOracle Databaseインストールに含まれます。Oracle Databaseをインストールする場合、Oracle Universal InstallerによりORACLE_BASE\ORACLE_HOME
ディレクトリの下のoci
、bin
およびprecomp
ディレクトリにOCIファイルが作成されます。これらのファイルには、OCIアプリケーションのリンクおよび実行に必要なライブラリ・ファイル、およびOracle Formsなどの他のOracle for Microsoft Windows製品へのリンクに必要なライブラリ・ファイルが含まれます。
ORACLE_BASE\ORACLE_HOME
ディレクトリには、表D-1で説明している、OCIに関連のある次のディレクトリが含まれています。
OCIのインストール時に、サンプル・プログラムのセットおよび対応するプロジェクト・ファイルがORACLE_BASE\ORACLE_HOME
\oci\samples
サブディレクトリにコピーされます。OCIのインストールの成功を確認し、OCIアプリケーションの開発手順を理解するために、これらのサンプル・プログラムをビルドし、実行することをお薦めします。
サンプルをビルドするには、コマンド・プロンプトでバッチ・ファイル(make.bat)
を実行します。たとえば、cdemo1.c
サンプルをビルドするには、samples
ディレクトリで次のコマンドを入力します。
C:> make cdemo1
これらのサンプル・プログラムの使用後、削除しても構いません。
ociucb.c
プログラムは、ociucb.bat
を使用してコンパイルします。このバッチ・ファイルはDLLを作成し、ORACLE_BASE\ORACLE_HOME
\bin
ディレクトリに格納します。ユーザー・コールバック関数をロードするには、環境レジストリ変数ORA_OCI_UCBPKG
にOCIUCB
を設定します。
OCIアプリケーションをコンパイルする際には、適切なOCIヘッダー・ファイルを含める必要があります。ヘッダー・ファイルは、\ORACLE_BASE\ORACLE_HOME
\oci\include
ディレクトリに格納されています。
Microsoft Visual C++については、「オプション」ダイアログ・ボックスのライブラリのセクションで、\ORACLE_BASE\ORACLE_HOME\oci\lib\msvc
を指定する必要があります。Borlandコンパイラについては、\ORACLE_BASE\ORACLE_HOME\oci\lib\bc
を指定します。
たとえば、Microsoft Visual C++ 8.0を使用している場合、「ツール」メニュー内にある「オプション」ダイアログの「ディレクトリ」ページで、適切なパス\oracle\db_1\oci\include
を入力する必要があります。
注意:
現行のOCIリリースでは、Microsoft Visual C++ 7.1以降のみがサポートされています。
関連項目:
アプリケーションのコンパイル方法および特別なコンパイラ・オプションに関する固有の情報は、コンパイラのドキュメントを参照してください。
OCIコールは、Oracleが提供するDynamic Link Libraries (DLL)で実装されます。
DLLはORACLE_BASE\ORACLE_HOME
\bin
ディレクトリに格納されており、Required Support Files (RSF)の一部です。
Microsoft Compiler用のoci.lib
インポート・ライブラリのみ提供しています。BorlandコンパイラもOracleによってOCIでの使用がサポートされています。リリースごとの再リンクやコンパイルを回避するために、アプリケーションを必ずoci.lib
にリンクすることをお薦めします。
oci.lib
をMicrosoft Compilerとともに使用する場合、特別なリンク・オプションを指定する必要はありません。
LoadLibrary()
関数により、クライアントDLLのロードのために次のディレクトリがこの順序で検索されます。
アプリケーションのロード元ディレクトリ、またはoci.dll
が格納されているディレクトリ
現行ディレクトリ
Windows
32ビットWindowsシステム・ディレクトリ(system32)
。このディレクトリへのパスを取得するには、Windows APIのGetWindowsDirectory()
関数を使用します。
16ビットWindowsディレクトリ(system)
。このディレクトリへのパスを取得するためのWin32関数は存在しませんが、検索されます。
PATH
環境変数にリスト表示されているディレクトリ
OCIアプリケーションを実行する際、OCIアプリケーションを実行するコンピュータ上に、対応するRequired Support Files (RSF)のセット全体がインストールされていることを確認してください。
XA Application Program Interface (API)は、通常、Oracle Databaseが次のようなトランザクション処理(TP)モニターと対話するために使用されます。
Oracle Tuxedo
IBM Transarc Encina
IBM CICS
また、TPモニター文をクライアント・プログラムでも使用できます。XA APIの使用は、OCIによってサポートされています。
Oracle XAライブラリは、Oracle Database Enterprise Editionの一部として自動的にインストールされます。表D-2に、Oracleホーム・ディレクトリに作成されるコンポーネントを示します。oci.lib
インポート・ライブラリにはXAエクスポートが含まれています。
表D-2 Oracle XAコンポーネント
コンポーネント | 位置 |
---|---|
|
|
Oracle XAライブラリを使用してOCIプログラムのコンパイルおよびリンクを行うには、次の手順を実行します。
Microsoft Visual C++またはBorlandコンパイラを使用し、 ORACLE_BASE\ORACLE_HOME
\rdbms\xa
を必ずパスに含め、program
.c
をコンパイルします。
program
.obj
を、表D-3に示されているライブラリとリンクします。
表D-3 リンク・ライブラリ
ライブラリ | 位置 |
---|---|
|
|
|
|
program
.exe
を実行します。
データベースでは、XAの動的な登録をサポートしています。
XAの動的な登録は、XA準拠TPモニターと対話するアプリケーションのパフォーマンスを改善します。TPモニターがWindows上でOracle Databaseに対しXAの動的な登録を使用するようにするには、TPモニターが稼働しているWindowsシステムに、環境変数またはレジストリ変数のいずれかを追加する必要があります。手順は、次のいずれかの項を参照してください。
コマンド・プロンプトで環境変数を追加すると、現行セッションのみが影響を受けます。
環境変数の追加手順
TPモニターがインストールされているコンピュータから、コマンド・プロンプトで次のように入力します。
C:\> set ORA_XA_REG_DLL = vendor.dll
この例では、vendor
.dll
は、ベンダーが提供するTPモニターのDLLです。
レジストリ変数を追加すると、Windowsシステム上の全セッションが影響を受けます。1つのTPモニターのみが稼働しているコンピュータでは、この方法が便利です。
XAおよびTPモニターに関して、次の一般的な情報を参照してください。
『Distributed TP: The XA Specification』(C193)、The Open Group発行。
次のWebサイトを参照してください。
ご使用のTPモニター固有のドキュメント
Oracle XAライブラリの詳細およびXAの動的な登録の使用方法の詳細は、『Oracle Database開発ガイド』のOracle XAでのアプリケーションの開発に関する項を参照してください
Oracle Tuxedoの情報は、次を参照してください。
http://www.oracle.com/us/products/middleware/cloud-app-foundation/tuxedo/tuxedo/overview/index.html
オブジェクトを利用するには、データベースに対してObject Type Translator (OTT)を実行して、C構造体を含むヘッダー・ファイルを生成します。たとえば、データベースにPERSON
型が作成された場合、PERSON
の属性に対応する要素を持つC構造体がOTTにより生成されます。さらに、C構造体のインスタンスのNULL情報を表現するNULLインジケータ構造体が作成されます。
intypeファイルは、どのオブジェクト型を変換する必要があるかをOTTに指示します。また、このファイルは生成された構造体の命名も制御します。
注意:
Oracle Database 10gリリース1より、INTYPEファイル・アシスタントは使用できません。
CASE=LOWER
など、intypeファイル内のCASE
仕様は、intypeファイルのTYPE
またはTRANSLATE
文によって特別にはリストされていないC識別子にのみ適用されます。intypeファイルでは、TYPE Person
およびType PeRsOn
などのように、型名を適切な大/小文字で入力することが重要です。
Windowsでは、OTTはコマンドラインから起動できます。構成ファイルは、コマンドラインで名前を付けることもできます。Windowsの場合、構成ファイルは、ORACLE_BASE\ORACLE_HOME
\precomp\admin
に格納されているottcfg.cfg,
です。