D OCI for Windowsスタート・ガイド
OCI for Windowsの使用方法について説明します。
この付録では、Windows 2003、Windows 2000およびWindows XPの各オペレーティング・システムに該当するOCIの機能のみ説明します。Windows NTは、サポート対象外になりました。
この章には次のトピックが含まれます:
D.1 OCI for Windowsパッケージの内容
OCI for Windowsパッケージには、OCIプログラムをリンクするために必要な追加ライブラリが含まれています。
Oracle Call Interface for Windowsパッケージには、次のものが含まれています。
-
Oracle Call Interface(OCI)
-
Required Support Files (RSF)
-
Oracle Universal Installer
-
OCIアプリケーションのコンパイル用ヘッダー・ファイル
-
OCIアプリケーションのリンク用ライブラリ・ファイル
-
OCIアプリケーションの構築方法を示すサンプル・プログラム
関連項目:
単純なOCIのインストール・オプションは、「Oracle Instant Client」を参照してください。
D.2 WindowsでのOracleディレクトリ構造
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に関連のある次のディレクトリが含まれています。
表D-1 ORACLE_HOMEディレクトリと内容
ディレクトリ名 | 内容 |
---|---|
|
実行可能ファイルおよびヘルプ・ファイル |
|
Windows用Oracle Call Interfaceディレクトリ・ファイル |
|
|
|
サンプル・プログラム |
|
Object Type Translatorユーティリティおよびデフォルト構成ファイル |
D.3 Windows用サンプルOCIプログラム
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
を設定します。
D.4 Windows用OCIアプリケーションのコンパイルについて
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以降のみがサポートされています。
関連項目:
アプリケーションのコンパイル方法および特別なコンパイラ・オプションに関する固有の情報は、コンパイラのドキュメントを参照してください。
D.5 Windows用OCIアプリケーションのリンクについて
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とともに使用する場合、特別なリンク・オプションを指定する必要はありません。
D.5.1 oci.lib
アプリケーションをoci.libとリンクする必要がある理由を説明します。
アプリケーションをoci.lib
にリンクすることをお薦めします。これにより、Oracle DLLの正しいバージョンがロードされます。
D.5.2 LoadLibrary()使用時のクライアントDLLのロード
LoadLibrary使用時にディレクトリがどのように検索されるかを説明します。
LoadLibrary()
関数により、クライアントDLLのロードのために次のディレクトリがこの順序で検索されます。
-
アプリケーションのロード元ディレクトリ、または
oci.dll
が格納されているディレクトリ -
現行ディレクトリ
-
Windows
-
32ビットWindowsシステム・ディレクトリ
(system32)
。このディレクトリへのパスを取得するには、Windows APIのGetWindowsDirectory()
関数を使用します。 -
16ビットWindowsディレクトリ
(system)
。このディレクトリへのパスを取得するためのWin32関数は存在しませんが、検索されます。
-
-
PATH
環境変数にリスト表示されているディレクトリ
D.6 Windows用OCIアプリケーションの実行について
Windows用OCIアプリケーションの実行に必要なことについて説明します。
OCIアプリケーションを実行する際、OCIアプリケーションを実行するコンピュータ上に、対応するRequired Support Files (RSF)のセット全体がインストールされていることを確認してください。
D.7 Oracle XAライブラリ
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コンポーネント
コンポーネント | 場所 |
---|---|
|
|
D.7.1 OCIプログラムのコンパイルとOracle XAライブラリとのリンクについて
Oracle XAライブラリを使用してOCIプログラムのコンパイルおよびリンクを実行する方法を説明します。
Oracle XAライブラリを使用してOCIプログラムのコンパイルおよびリンクを行うには:
-
Microsoft Visual C++またはBorlandコンパイラを使用して
program
.c
をコンパイルします。必ずパスにORACLE_BASE\ORACLE_HOME
\rdbms\xa
を含めてください。 -
program
.obj
を、表D-3に示されているライブラリとリンクします。表D-3 リンク・ライブラリ
ライブラリ 場所 oraxa12.lib
ORACLE_BASE\ORACLE_HOME
\rdbms\xa
oci.lib
ORACLE_BASE\ORACLE_HOME
\oci\lib\msvc
またはORACLE_BASE\ORACLE_HOME
\oci\lib\bc
-
program
.exe
を実行します。
D.7.2 XAの動的な登録の使用について
データベースでは、XAの動的な登録をサポートしています。
XAの動的な登録は、XA準拠TPモニターと対話するアプリケーションのパフォーマンスを改善します。TPモニターがWindows上でOracle Databaseに対しXAの動的な登録を使用するようにするには、TPモニターが稼働しているWindowsシステムに、環境変数またはレジストリ変数のいずれかを追加する必要があります。手順は、次のいずれかの項を参照してください。
D.7.2.1 現行セッション用の環境変数の追加
コマンド・プロンプトで環境変数を追加すると、現行セッションのみが影響を受けます。
環境変数を追加するには:
TPモニターがインストールされているコンピュータから、コマンド・プロンプトで次のように入力します。
C:\> set ORA_XA_REG_DLL = vendor.dll
この例では、vendor
.dll
は、ベンダーが提供するTPモニターのDLLです。
D.7.2.2 全セッション用のレジストリ変数の追加について
レジストリ変数を追加すると、Windowsシステム上の全セッションが影響を受けます。
1つのTPモニターのみが稼働しているコンピュータでは、この方法が便利です。
D.7.3 XAおよびTPモニターに関する情報
『Distributed TP: The XA Specification』をはじめ、TPモニターおよびXAに関する詳細情報を参照してください。
『Distributed TP: The XA Specification』(C193)、The Open Group発行(Webサイト: Distributed TP: The XA Specification)
関連項目:
-
Oracle XAライブラリの詳細およびXAの動的な登録の使用方法の詳細は、『Oracle Database開発ガイド』のOracle XAでのアプリケーションの開発に関する項を参照してください
D.8 Object Type Translator for Windowsの使用について
オブジェクトを利用するには、データベースに対して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,
です。