この章では、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が含まれています。