この章では、Oracle C++ Call Interface(OCCI)のインストールとアップグレードの概要を説明します。
ここでは、次の項目について説明します。
OCCIはOracle Databaseの一部としてインストールされます。構成に関するその他の要件を決定するには、対象のプラットフォームに対応した『Oracle Databaseインストレーション・ガイド』および『Oracle Database Clientインストレーション・ガイド』を参照してください。
このリリースの新機能を使用するには、Oracleクライアントの以前のリリースからアップグレードする際に、オブジェクト型トランスレータ・ユーティリティで生成されたクラスを含む、すべてのOCCIアプリケーションを再コンパイルし、再リンクする必要があります。
アプリケーションで複数の異なるコード・パスを使用し、それらのコード・パスで、異なるバージョンのサーバーまたはクライアントのパッチセットを使用する場合には、コンパイル時および実行時のどちらでもこれらのオプションを検証できます。
OCCIヘッダー・ファイルは、OCCI_MAJOR_VERSIONおよびOCCI_MINOR_VERSIONマクロを定義します。例2-1に、これらのマクロの使用方法を示します。
実行時に、getClientVersion()、getServerVersion()およびgetServerVersionUString()メソッドを使用して、現行のConnectionのクライアントおよびサーバーのバージョンを両方チェックできます。
Instant Client機能を使用すると、ORACLE_HOMEの必要性がなくなることで、OCCIベースのカスタマ・アプリケーションを非常に簡単に、かつすばやくデプロイできます。もう1つの利点として、記憶領域要件があります。Instant Clientの共有ライブラリは、完全なクライアント・インストールに必要なディスク領域の約4分の1で済みます。
インストールは、4つのファイルのコピーのみで済みます。
クライアントの記憶領域要件は最小限です。
デプロイしたアプリケーションで機能が損なわれたりパフォーマンスが低下することはありません。
ISVアプリケーションとのパッケージングが簡素化されています。
OCCI Instant Client機能によって、OCCIのインストールが簡単になります。Instant ClientモードのためOCCIがORACLE_HOME設定に依存していない場合でも、ORACLE_HOME設定に依存するアプリケーションは、ORACLE_HOMEを適切な値に設定することで、引き続き動作が可能になります。Instant Clientモードのアクティブ化は、Instant Clientデータ共有ライブラリをロードできるかどうかにのみ依存します。特に、この機能によって、データ用にORACLE_HOMEを使用しながら新規リリースのOracleクライアントを使用するOracleアプリケーションとの相互運用性が確保されます。
OCCIには、オペレーティング・システムの動的ローダーによってロードされる4つの共有ライブラリ(一部のオペレーティング・システムではダイナミック・リンク・ライブラリと呼ばれます)のみです。Oracle Database 11g リリース1(11.1)のライブラリ名が使用されています。ライブラリ名の数字の部分は、将来のリリース番号にあわせて変更されます。
OCI Instant Clientデータ共有ライブラリ(LinuxおよびUNIXではlibociei.so、Windowsではoraociei11.dll)。このファイルの正しいインストールによって、Instant Clientモードで操作しているかどうかが判別されます。
クライアント・コード・ライブラリ(LinuxおよびUNIXではlibclntsh.so.11.1、Windowsではoci.dll)。
セキュリティ・ライブラリ(LinuxおよびUNIXではlibnnz11.so、Windowsではorannzsbb11.dll)。
OCCIライブラリ(LinuxおよびUNIXではlibocci.so.11.1、Windowsではoraocci11.dll)。
Instant Clientライブラリは、OTN(Oracle Technology Network)のWebサイトでも入手できます。
http://www.oracle.com/technology/tech/oci/instantclient/
OSのライブラリ・パス変数(LinuxおよびUNIXではLD_LIBRARY_PATH、WindowsではPATH)のディレクトリを通じてこれらの4つのライブラリにアクセスできる場合、OCCIはInstant Clientモードで動作します。このモードでは、ORACLE_HOMEへの依存性はありません。ORACLE_HOMEで指定された他のコードおよびデータ・ファイルは、OCCIでは不要です。
OTNからInstant Clientをインストールする場合は、次の手順で行います。
Instant Clientライブラリを、instantclient_11_1などの空のディレクトリにダウンロードしてインストールします。
オペレーティング・システムの共有ライブラリ・パス環境変数(LinuxおよびUNIXではLD_LIBRARY_PATH、WindowsではPATH)を、手順1で使用したディレクトリ、instantclient_11_1に設定します。
Instant Clientは、SDKパッケージとしてダウンロードすることもできます。SDKには、Instant Client環境でOCCIアプリケーションを開発するために必要なすべてのヘッダー・ファイルおよびMakeファイルが含まれています。開発したアプリケーションは、あらゆるクライアント環境にデプロイできます。SDKには、次のような追加の機能があります。
C++のデモンストレーション・プログラムが含まれています。
Windows上のアプリケーションにリンクするためのライブラリが含まれており、デモンストレーションを作成するためのMake.batファイルが用意されています。
LinuxおよびUNIXでデモンストレーションを作成するためのMakeファイルdemo.mkが提供されています。アプリケーションをリンクする前に、LD_LIBRARY_PATHにinstantclient_11_1ディレクトリを必ず定義します。これらのプログラムでは、クライアント・コード・ライブラリおよびOCCIライブラリに対するシンボリック・リンク(それぞれlibclntsh.soとlibocci.so)がinstantclient_11_1ディレクトリに必要になります。デモンストレーション用のMakeファイルdemo.mkでは、リンクの手順の前にこれらのリンクを生成します。これらのシンボリック・リンクは、シェル・スクリプトで作成することもできます。
cd instantclient_11_1 ln -s libclntsh.so.11.1 libclntsh.so ln -s libocci.so.11.1 libocci.so
また、SDKには、アプリケーション・ヘッダー・ファイルを生成するための、オブジェクト型トランスレータ(OTT)ユーティリティとそのクラスが含まれます。
管理者オプションを選択して完全なクライアント・インストールを実行した場合、次の操作を実行できます。
LinuxおよびUNIXでは、libociei.soライブラリを$ORACLE_HOME/instantclientディレクトリからコピーできます。他のすべてのライブラリは、Oracleの完全インストールにおける$ORACLE_HOME/libディレクトリからコピーできます。
Windowsでは、oraociei11.dllライブラリをORACLE_HOME¥instantclientディレクトリからコピーできます。他のすべてのWindowsライブラリは、ORACLE_HOME¥binディレクトリからコピーできます。Microsoft ODBCおよびOLEDBドライバを使用するには、ORACLE_HOME¥binからociw32.dllもコピーする必要があります。
データベースをインストールしていない場合、これらのライブラリをインストールするには、Oracle Universal InstallerからInstant Clientオプションを選択します。これらの手順が完了すると、OCCIアプリケーションの実行を開始できます。
Instant Client共有ライブラリを、instantclient_11_1などのディレクトリにインストールします。
オペレーティング・システム共有ライブラリ・パスの環境変数を、手順1のディレクトリに設定します。たとえば、LinuxまたはUNIXでは、LD_LIBRARY_PATHをinstantclient_11_1に設定します。Windowsでは、PATHをinstantclient_11_1ディレクトリがある場所に設定します。
Instant ClientはInstant ClientのCDからインストールすることもできます。Instant Clientを空のディレクトリまたは別のシステムのディレクトリにインストールします。
オペレーティング・システムのライブラリ・パス変数で定義できるのは、1セットのOracleライブラリのみです。Instant Clientライブラリについて複数のディレクトリまたはコピーが存在する場合は、オペレーティング・システムのライブラリ・パスでディレクトリを1つのみ定義します。
同様に、同じマシンのORACLE_HOMEにもインストール済の場合は、ライブラリ・パスに示される順序にかかわらず、ORACLE_HOME/libとInstant Clientディレクトリの両方をオペレーティング・システムのライブラリ・パスに定義することはできません。オペレーティング・システムのライブラリ・パス変数には、ORACLE_HOME/libディレクトリ(非Instant Clientで操作する場合)またはInstant Clientディレクトリ(Instant Clientモードで操作する場合)のいずれか1つのみを定義します。
Instant Client機能は、本番アプリケーションを実行するために設計されています。開発では、Instant Client SDKまたは完全なインストールを使用して、OCCIヘッダー・ファイル、Makeファイル、デモンストレーション・プログラムなどにアクセスします。
この機能は、Windowsプラットフォームでは使用できません。
Instant Clientは主にデプロイメント用の機能であるため、必要なファイルの数およびサイズを減らすことが設計目標の1つとなっています。したがって、Instant Clientのデプロイメントには、共有ライブラリのパッチのためのすべてのファイルが含まれるわけではありません。Instant Client共有ライブラリにパッチを適用するには、ORACLE_HOMEベースの完全なクライアントでOPATCHユーティリティを使用する必要があります。OPATCHユーティリティでは、LinuxおよびUNIX用のORACLE_HOMEのインストールを行うためのパッチ適用情報をlibclntsh.so.11.1に格納します。この情報は、geneziユーティリティを使用して取得できます。
genezi -v
Instant Clientをデプロイするマシンにgeneziユーティリティがインストールされていない場合は、ORACLE_HOMEのORACLE_HOME/binディレクトリからコピーできます。
ORACLE_HOME環境でパッチを適用した後で、「Instant Clientのインストール」に表示されているファイルを、Instant Clientディレクトリにコピーします。個々のファイルをコピーするかわりに、データ共有ライブラリおよびzipファイルの再生成の説明に従って、Instant Clientの*.zipファイルを生成することもできます。次に、個々のファイルをコピーするかわりに、ターゲット・マシンにzipファイルをコピーして解凍できます。
この機能は、Windowsプラットフォームでは使用できません。
Instant Clientデータ共有ライブラリlibociei.soは、ORACLE_HOMEのクライアント管理者インストールで再生成できます。次の3行を実行すると、ORACLE_HOMEの現行ファイルに基づいて新しいlibociei.soファイルが作成され、ORACLE_HOME/rdbms/install/instantclientディレクトリに格納されます。makeのターゲットilibocieiによりlibociei.soが生成されます。
mkdir -p $ORACLE_HOME/rdbms/install/instantclient/light cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk ilibociei
|
注意:
|
ORACLE_HOMEまたはTNS_ADMINをtnsnames.oraまたはsqlnet.oraなどの構成ファイルの位置指定に必要としない、Oracle Netネーミング・メソッドはすべて、Instant Clientモードで機能します。
createConnection()コールのconnectStringパラメータは、次の書式で指定できます。
次の書式のSQL接続URL文字列。
//host:[port][/service name]
例:
//myserver111:5521/bjava21
Oracle Netのキーワード値ペア。たとえば、次のようにします。
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=myserver111) (PORT=5521)) (CONNECT_DATA=(SERVICE_NAME=bjava21)))
サイトがLDAPサーバーを検出するように構成されている場合に、ディレクトリ・ネーミングによって解決される接続名。
tnsnames.oraファイルのエントリ。
TNS_ADMIN環境変数が設定されておらず、inst1などのTNSNAMESエントリが使用されている場合は、ORACLE_HOME変数が設定され、構成ファイルが$ORACLE_HOME/network/adminディレクトリに格納されている必要があります。
構成ファイルの位置指定にTNS_ADMINを必要とするネーミング・メソッドは、TNS_ADMIN環境変数が設定されている場合、引き続き機能します。
この場合のORACLE_HOME変数はOracle Net構成ファイルの位置指定にのみ使用され、OCCIクライアント・コード・ライブラリの他のコンポーネントではORACLE_HOMEの値は使用されません。
createConnection()の空のconnectStringパラメータは、環境変数(LinuxおよびUNIXではTWO_TASK、WindowsではLOCAL)を前述した4つの値のいずれかに設定することによってサポートされます。
ORACLE_HOME環境変数は、グローバリゼーション・サポート、COREおよびエラー・メッセージ・ファイルの位置を決定するものではなくなりました。OCCI専用アプリケーションでは、ORACLE_HOMEを設定する必要はありません。ただし、設定されている場合でも、OCCIの動作には影響しません。OCCIは、常にデータ共有ライブラリからデータを取得します。データ共有ライブラリを使用できない場合のみORACLE_HOMEが使用され、完全なクライアント・インストールが前提となります。ORACLE_HOMEを設定する場合は、ディレクトリを識別する有効なオペレーティング・システムのパス名にする必要があります。
環境変数ORA_NLS33、ORA_NLS32およびORA_NLSは、Instant Clientモードでは無視されます。
Instant Clientモードでは、ORA_TZFILE変数が設定されていない場合、データ共有ライブラリに含まれる、小さいデフォルトのtimezone.datファイルが使用されます。データ共有ライブラリに含まれる、これよりサイズの大きいtimezlrg.datファイルを使用する場合は、ORA_TZFILE環境変数を、絶対パス名または相対パス名を含まないこのファイルの名前に設定します。LinuxおよびUNIXでは次のようになります。
setenv ORA_TZFILE timezlrg.dat
set ORA_TZFILE timezlrg.dat
データ共有ライブラリを使用できないためにOCCIがInstant Clientモードで動作しない場合は、ORA_TZFILE変数(設定する場合)を完全なパス名で指定します。
TNSNAMESエントリを使用する場合は、TNS_ADMINディレクトリにTNSNAMES構成ファイルが含まれている必要があります。TNS_ADMINを設定しない場合は、ORACLE_HOME/network/adminディレクトリにOracle Net Services構成ファイルが含まれている必要があります。
Instant Client Light (English)では、Instant Client全体でクライアントのインストールに必要な領域が63MB削減されます。具体的には、完全なInstant Client共有ライブラリlibociei.soの場合は67MBのディスク領域が占有されるのに対して、Instant Client Light (English)共有ライブラリ(LinuxおよびUNIXではlibociicus.so、Windowsではoraociicus11.dll)のインストールには、UNIXプラットフォームでは4MBのみ占有されます。
Instant Client Light (English)は、名前が示しているように、必要とするエラー・メッセージは英語のみで、US7ASCII、WE8DEC、またはUnicode文字のいずれかを使用するアプリケーション向けです。Instant Client Light(English)では、NLS_LANG設定を行うTERRITORYフィールドに制約はありません。そのため、これらのキャラクタ・セットおよびTERRITORY基準を満たすアプリケーションをInstant Client Light (English)環境で実行すると、フットプリントを大幅に削減できます。
Instant Client Light (English)は次のキャラクタ・セットをサポートしています。
US7ASCII、WE8DEC、WE8MSWIN1252およびWE8ISO8859P1を含むシングルバイトのキャラクタ・セット。
Unicodeキャラクタ・セットには、UTF8、AL16UTF16およびAL32UTF8が含まれます。
Instant Client Light (English)では、アプリケーションがクライアントまたはデータベースのいずれかで、ここに表示されていないキャラクタ・セットまたは各国語キャラクタ・セットを使用しようとすると、エラー・メッセージが戻されます。ここに表示された、想定されるエラー・メッセージは英語でのみ使用できます。
ORA-12734 Instant Client Light: unsupported client national character set (NLS_LANG value set)
(Instant Client Light: サポートされていないクライアント各国語キャラクタ・セット(NLS_LANG値セット)です)
ORA-12735 Instant Client Light: unsupported client character set (NLS_LANG value set)
(Instant Client Light: サポートされていないクライアント・キャラクタ・セット(NLS_LANG値セット)です)
ORA-12736 Instant Client Light: unsupported server national character set (NLS_LANG value set)
(Instant Client Light: サポートされていないサーバー各国語キャラクタ・セット(NLS_LANG値セット)です)
ORA-12737 Instant Client Light: unsupported server character set (NLS_LANG value set)
(Instant Client Light: サポートされていないサーバー・キャラクタ・セット(NLS_LANG値セット)です)
NLS_LANGパラメータを設定する場合は、次のように使用します。
American_territory.charset
ここでterritoryは、NLS_LANGで指定可能な任意の有効なTerritoryで、charsetは前述のキャラクタ・セットのいずれかです。
Instant Clientモードで操作するかどうかを決定するために、OCCIアプリケーションはLinuxおよびUNIXではLD_LIBRARY_PATH、WindowsではPATHでデータ共有ライブラリを検索します。このライブラリが見つからない場合、OCCIはInstant Client Light (English)データ共有ライブラリ(LinuxおよびUNIXではlibociicus.so、Windowsではoraociicus11.dll)のロードを試みます。いずれのライブラリも見つからない場合は、ORACLE_HOMEの完全インストールとみなされます。
Instant Client Light (English)をインストールするには3つの方法があります。OTNのダウンロード・ページからのインストール、Client Admin Installを介したインストール、Oracle Universal Installerを介したインストールです。
|
注意: Instant ClientおよびInstant Client Light (English)のすべてのファイルは、必ず空のディレクトリにコピーまたはインストールして、最終的なインストールで互換性のないバイナリが生じないようにします。 |
OTNからInstant Client Light (English)をインストールする場合は、通常のbasic.zipパッケージのかわりにbasiclite.zipパッケージをダウンロードして解凍します。ライブラリを解凍する前に、instantclient_11_1ディレクトリが空であることを必ず確認してください。ダウンロードできるパッケージは、OTNの次のURLにあります。
http://www.oracle.com/technology/tech/oci/instantclient/
ORACLE_HOME/instantclientディレクトリからInstant Clientのデータ共有ライブラリをコピーするかわりに、ORACLE_HOME/instantclient/lightディレクトリのInstant Client Light (English)データ共有ライブラリ(LinuxおよびUNIXではlibociicus.so、Windowsではoraociicus11.dlll)を使用します。つまり、Instant Clientディレクトリ(LinuxおよびUNIXではLD_LIBRARY_PATH、WindowsではPATH)には、サイズの小さいInstant Client Light (English)データ共有ライブラリが含まれています。
Oracle Universal Installer(OUI)でInstant Clientのオプションを選択した場合は、デフォルトで完全なInstant Clientがインストールされますが、Instant Client Light (English)のライブラリもインストールされます。Instant Client Light (English)モードで操作する場合には、Instant Clientライブラリを、Instant Client Light (English)のデータ共有ライブラリで置き換えます。つまり、LinuxおよびUNIXではLD_LIBRARY_PATHにlibociicus.soを定義し、WindowsではPATHにoraociicus11.dllを定義する必要があります。このようにすると、デフォルトでInstant Client Light (English)が無効になります。
Instant Client Light (English)のデータ共有ライブラリは、最初にORACLE_HOME/instantclient/lightディレクトリに配置されます。インストールのベース・ディレクトリ、ORACLE_HOME/instantclientに移動し、ディレクトリのInstant Clientデータ共有ライブラリを削除する必要があります。
例2-2 Oracle Universal Installerを使用したInstant Client Light (English)のインストール
OUIでInstant ClientをLD_LIBRARY_PATHのmy_oraic_11_1ディレクトリにインストールした場合、次のコマンドを実行して、Instant Client Light (English)モードでの操作を確認します。
cd my_oraic_11_1 rm libociei.so mv light/libociicus.so .
|
注意: 互換性のないバイナリ・ファイルの使用を避けるために、Instant Clientファイルはすべて空のディレクトリにコピーしてインストールします。 |
Oracle Database 11g リリース1には、Microsoft Visual C++バージョン8.0(.NET 2005)およびMicrosoft Visual C++バージョン7.1(.NET 2003)によりアプリケーションを開発するためのOCCIライブラリが含まれます。Microsoft Visual C++バージョン6.0はサポート対象外となりました。
Microsoft Visual C++バージョン7.1ライブラリは、次のデフォルトの場所にインストールされています。
ORACLE_BASE\ORACLE_HOME\bin\oraocci11.dll ORACLE_BASE\ORACLE_HOME\oci\lib\msvc\oraocci11.lib
また、これらの2つのファイルのコピーが、次のディレクトリにインストールされています。
ORACLE_BASE\ORACLE_HOME\oci\lib\msvc\vc71
Microsoft Visual C++ 7.0固有のライブラリ・バージョンは、次のディレクトリにインストールされています。
ORACLE_BASE\ORACLE_HOME\oci\lib\msvc\vc7
アプリケーションは、適切なOCCIライブラリとリンクする必要があります。対応するDLLがWindowsシステムPATHに置かれていることを確認してください。
MSVCRTD.DLLとリンクされるアプリケーション(Microsoft C-Runtimeのデバッグ・バージョン、/MDdコンパイラ・フラグ)は、これらの特定のOCCIライブラリ(oraocci11d.libおよびoraocci11d.dll)とリンクする必要があります。
すべてのInstant Clientパッケージに、Microsoft Visual C++バージョン7.1互換バージョンのOCCI DLLが含まれています。