2 インストールとアップグレード
この章では、Oracle C++ Call Interface (OCCI)のインストールとアップグレードの概要を説明します。
2.1 Oracle C++ Call Interfaceのインストールについて
OCCIはOracle Databaseの一部としてインストールされます。追加の構成要件を決定するには、使用しているプラットフォーム専用の『Oracle Databaseインストレーション・ガイド』および『Oracle Database Clientインストレーション・ガイド』を参照してください。
2.2 アップグレードに関する考慮点について
このリリースの新機能を使用するには、Oracleクライアントの以前のリリースからアップグレードする際に、オブジェクト型トランスレータ・ユーティリティで生成されたクラスを含む、すべてのOCCIアプリケーションを再コンパイルし、再リンクする必要があります。
2.3 Oracle Databaseバージョンの決定について
アプリケーションで、サーバー・バージョンまたはクライアント・パッチセットが異なる複数の異なるコード・パスを使用する場合には、コンパイル時および実行時のどちらでもこれらのオプションを検証できます。
2.3.1 コンパイル時のOracleクライアント・バージョンの決定
OCCIヘッダー・ファイルは、OCCI_MAJOR_VERSION
およびOCCI_MINOR_VERSION
マクロを定義します。例2-1に、これらのマクロの使用方法を示します。
例2-1 クライアントのメジャー・バージョンの決定方法およびパフォーマンス機能の設定方法
#if (OCCI_MAJOR_VERSION > 9) env->setCacheSortedFlush(true); // benefit of performance, if available #endif
2.3.2 実行時のOracleクライアントおよびサーバーのバージョンの決定について
実行時に、getClientVersion()、getServerVersion()およびgetServerVersionUString()メソッドを使用して、現行のConnection
のクライアントおよびサーバーのバージョンを両方チェックできます。
2.4 Instant Clientについて
Instant Client機能を使用すると、ORACLE_HOME
を使用する必要がなくなるため、OCCIベースのカスタマ・アプリケーションを非常に簡単かつ短時間にデプロイできます。記憶域要件も利点のひとつです。Instant Client共有ライブラリは、クライアントの完全インストールに必要なディスク領域のうち、4分の1のみを使用します。
2.4.1 Instant Clientの利点について
-
インストールは、4つのファイルのコピーのみで済みます。
-
クライアントの記憶領域要件は最小限です。
-
デプロイしたアプリケーションで機能が損なわれたりパフォーマンスが低下することはありません。
-
ISVアプリケーションとのパッケージングが簡素化されています。
OCCI Instant Client機能によって、OCCIのインストールが簡単になります。Instant ClientモードのためOCCIがORACLE_HOME
設定に依存していない場合でも、ORACLE_HOME
設定に依存するアプリケーションは、ORACLE_HOMEを適切な値に設定することで、引き続き動作が可能になります。Instant Clientモードのアクティブ化は、Instant Clientデータ共有ライブラリをロードできるかどうかにのみ依存します。特に、この機能によって、データ用にORACLE_HOME
を使用しながら新規リリースのOracleクライアントを使用するOracleアプリケーションとの相互運用性が確保されます。
2.4.2 Instant Clientのインストールについて
OCCIでは、オペレーティング・システムのダイナミック・ローダーによってロードされる4つの共有ライブラリ(オペレーティング・システムによってはダイナミック・リンク・ライブラリとも呼ばれます)のみが必要です。Oracle Database 12cリリース1 (12.1)のライブラリ名を使用します。ライブラリ名の数字部分は、今後のリリース番号に合わせて変化します。
開発を明確かつ容易に行うために、Oracle Database 12cリリース1 (12.1)以降、ライブラリの構造が変更されました。クライアントの共有ライブラリlibclntsh.so.12.1
はlibclntshcore.so.12.1
に依存しています。libclntshcore.so.12.1
ライブラリには、NLSおよびCORE機能が含まれています。これらのライブラリの両方を同じディレクトリにインストールする必要があります。
-
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
)。
注意:
libclntshcore.so.12.1
ファイルはデータ共有ライブラリと同じライブラリに存在する必要があります。
2.4.2.1 Oracle Technology Networkについて
Instant Clientライブラリは、OTN (Oracle Technology Network)のWebサイトでも入手できます。
https://www.oracle.com/technetwork/database/database-technologies/instant-client/overview/index.html
この4つのライブラリがOperating System Library Path変数(LinuxとUNIX,ではLD_LIBRARY_PATH
、WindowsではPATH
)のディレクトリを通じてアクセス可能である場合には、OCCIはInstant Clientモードで動作します。このモードでは、ORACLE_HOME
への依存性はなく、ORACLE_HOME
に指定された他のコードおよびデータファイルは、OCCIでは不要です。
Oracle Technology NetworkからInstant Clientをインストールする場合は、次の手順で行います。
-
Instant Clientライブラリを、
instantclient_12_1
などの空のディレクトリにダウンロードしてインストールします。 -
オペレーティング・システムの共有ライブラリ・パス環境変数(LinuxおよびUNIXでは
LD_LIBRARY_PATH
、WindowsではPATH
)を、手順1で使用したディレクトリ、instantclient_12_1
に設定します。
この項には次のトピックが含まれます: 「Instant ClientのSDKについて」。
2.4.2.1.1 Instant ClientのSDKについて
Instant Clientは、SDKパッケージとしてダウンロードすることもできます。SDKには、Instant Client環境でOCCIアプリケーションを開発するために必要なすべてのヘッダー・ファイルおよびMakeファイルが含まれています。開発したアプリケーションは、あらゆるクライアント環境にデプロイできます。SDKには、次のような追加の機能があります。
-
C++のデモンストレーション・プログラムが含まれています。
-
Windows上のアプリケーションにリンクするためのライブラリが含まれており、デモンストレーションを作成するための
Make.bat
ファイルが用意されています。 -
LinuxおよびUNIXでデモンストレーションを作成するためのMakeファイル
demo.mk
が提供されています。アプリケーションをリンクする前に、LD_LIBRARY_PATH
にinstantclient_12_1
ディレクトリを必ず定義します。これらのプログラムでは、クライアント・コード・ライブラリおよびOCCIライブラリに対するシンボリック・リンク(それぞれlibclntsh.so.12.1
とlibocci.so.12.1
)がinstantclient_12_1
ディレクトリに必要になります。デモンストレーション用のMakeファイルdemo.mk
では、リンクの手順の前にこれらのリンクを生成します。これらのシンボリック・リンクは、シェル・スクリプトで作成することもできます。cd instantclient_12_1 ln -s libclntsh.so.11.1 libclntsh.so ln -s libocci.so.11.1 libocci.so
-
また、SDKには、アプリケーション・ヘッダー・ファイルを生成するための、Object Type Translator (OTT)ユーティリティとそのクラスが含まれます。
2.4.2.2 完全なクライアント・インストールについて
管理者オプションを選択して完全なクライアント・インストールを実行した場合、次の操作を実行できます。
-
LinuxおよびUNIXプラットフォームでは、
libociei.so
ライブラリを$
ORACLE_HOME
/instantclient
ディレクトリからコピーできます。他のすべてのライブラリは、Oracleの完全インストールにおける$
ORACLE_HOME
/lib
ディレクトリからコピーできます。 -
Windowsでは、
oraociei11.dll
ライブラリをORACLE_HOME
\instantclient
ディレクトリからコピーできます。他のすべてのWindowsライブラリは、ORACLE_HOME
\bin
ディレクトリからコピーできます。
2.4.2.3 Oracle Universal Installerの実行
データベースをインストールしていない場合、これらのライブラリをインストールするには、Oracle Universal InstallerからInstant Clientオプションを選択します。これらの手順が完了すると、OCCIアプリケーションの実行を開始できます。
- Instant Client共有ライブラリを、
instantclient_12_1
などのディレクトリにインストールします。 - オペレーティング・システム共有ライブラリ・パスの環境変数を、手順1のディレクトリに設定します。たとえば、LinuxまたはUNIXでは、
LD_LIBRARY_PATH
をinstantclient_12_1
に設定します。Windowsでは、PATH
をinstantclient_12_1
ディレクトリがある場所に設定します。
2.4.2.4 Instant ClientのCDについて
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つのみを定義します。
2.4.3 Instant Clientの使用について
Instant Client機能は、本番アプリケーションを実行するために設計されています。開発では、Instant Client SDKまたは完全なインストールを使用して、OCCIヘッダー・ファイル、Makeファイル、デモンストレーション・プログラムなどにアクセスします。
2.4.4 UNIXにおけるInstant Client共有ライブラリのパッチ
この機能は、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ファイルをコピーして解凍できます。
2.4.5 データ共有ライブラリおよびzipファイルの再生成
この機能は、Windowsプラットフォームでは使用できません。
Instant Clientデータ共有ライブラリlibociei.so
は、ORACLE_HOME
のクライアント管理者インストールで再生成できます。例2-2を実行すると、ORACLE_HOME
の現行ファイルに基づいて新しいlibociei.so
ファイルが作成され、ORACLE_HOME
/rdbms/install/instantclient
ディレクトリに格納されます。makeのターゲットilibociei
によってlibociei.so
が生成されます。
再生成されたデータ共有ライブラリlibociei.so
の場所は、ORACLE_HOME
/instantclient
の元の場所とは異なります
例2-2のスクリプトでは、Instant Client Light (English)についてのディレクトリも作成されます
例2-2 データ共有ライブラリ・ファイルの再生成方法
mkdir -p $ORACLE_HOME/rdbms/install/instantclient/light cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk ilibociei
2.4.6 Instant Clientのデータベース接続名について
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
)を前述した値のいずれかに設定することによってサポートされます。
関連項目:
接続記述子の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。
2.4.7 OCCI Instant Clientの環境変数の設定
ORACLE_HOME
環境変数は、グローバリゼーション・サポート、COREおよびエラー・メッセージ・ファイルの位置を決定するものではなくなりました。OCCI専用アプリケーションでは、ORACLE_HOME
を設定する必要はありません。ただし、設定されている場合でも、OCCIの動作には影響しません。OCCIは、常にデータ共有ライブラリからデータを取得します。データ共有ライブラリを使用できない場合のみORACLE_HOME
が使用され、完全なクライアント・インストールが前提となります。ORACLE_HOME
を設定する場合は、ディレクトリを識別する有効なオペレーティング・システムのパス名にする必要があります。
環境変数ORA_NLS33
、ORA_NLS32
およびORA_NLS
は、Instant Clientモードでは無視されます。
Instant Clientモードでは、ORA_TZFILE
変数が設定されていない場合、データ共有ライブラリに含まれる、これより大きいデフォルトのtimezlrg_
n
.dat
ファイル(n
はファイルのバージョン番号)が使用されます。データ共有ライブラリに含まれる、これよりサイズの小さいtimezone
_n
.dat
ファイルを使用する場合は、例2-3に示すように、ORA_TZFILE
環境変数を、絶対パス名または相対パス名を含まないこのファイルの名前に設定します。
データ共有ライブラリを使用できないためにOCCIがInstant Clientモードで動作しない場合は、ORA_TZFILE
変数(設定する場合)を完全なパス名で指定します。
TNSNAMES
エントリを使用する場合は、TNS_ADMIN
ディレクトリにTNSNAMES
構成ファイルが含まれている必要があります。TNS_ADMIN
を設定しない場合は、ORACLE_HOME
/network/admin
ディレクトリにOracle Net Services構成ファイルが含まれている必要があります。
2.5 Instant Client Light (English)について
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)環境で実行すると、フットプリントを大幅に削減できます。
2.5.1 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
は前述のキャラクタ・セットです。
関連項目:
NLS設定の詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。
2.5.2 Instant Client Light (English)の使用について
Instant Clientモードで操作するかどうかを決定するために、OCCIアプリケーションはLinuxおよびUNIXではLD_LIBRARY_PATH
、WindowsではPATH
でデータ共有ライブラリを検索します。このライブラリが見つからない場合、OCCIはInstant Client Light (English)データ共有ライブラリ(LinuxおよびUNIXではlibociicus.so
、Windowsではoraociicus11.dll
)のロードを試みます。いずれのライブラリも見つからない場合は、ORACLE_HOME
の完全インストールとみなされます。
2.5.3 Instant Client Light (English)のインストールについて
Instant ClientおよびInstant Client Light (English)のすべてのファイルは、必ず空のディレクトリにコピーまたはインストールして、最終的なインストールで互換性のないバイナリが生じないようにします。
2.5.3.1 Oracle Technology Networkからのダウンロード
OTNからInstant Client Light (English)をインストールする場合は、通常のbasic.zip
パッケージのかわりにbasiclite.zip
パッケージをダウンロードして解凍します。ライブラリを解凍する前に、instantclient_12_1
ディレクトリが空であることを必ず確認してください。ダウンロードできるパッケージは、OTNの次のURLにあります。
Oracle Instant Client
2.5.3.2 クライアント管理者インストールの使用について
ORACLE_HOME
/instantclient
ディレクトリからInstant Clientのデータ共有ライブラリをコピーするかわりに、ORACLE_HOME
/instantclient/light
ディレクトリのInstant Client Light (English)データ共有ライブラリ(LinuxおよびUNIXではlibociicus.so
、Windowsではoraociicus11.dll)を使用します。つまり、Instant Clientディレクトリ(LinuxおよびUNIXではLD_LIBRARY_PATH
、WindowsではPATH
)には、サイズの小さいInstant Client Light (English)データ共有ライブラリが含まれています。
2.5.3.3 Oracle Universal Installerを使用したインストール
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-4 Oracle Universal Installerを使用したInstant Client Light (English)のインストール
OUIでInstant ClientをLD_LIBRARY_PATH
のmy_oraic_12_1
ディレクトリにインストールした場合、次のコマンドを実行して、Instant Client Light (English)モードでの操作を確認します。互換性のないバイナリ・ファイルの使用を避けるために、Instant Clientファイルはすべて空のディレクトリにコピーしてインストールします。
cd my_oraic_12_1 rm libociei.so mv light/libociicus.so .
2.6 Microsoft Visual C++でのOCCIの使用について
Oracle Database 12cリリース1 (12.1)には、Microsoft Visual C++バージョン10.0 (.NET 2010 SP1 10.0)、Microsoft Visual C++バージョン11.0 (.NET 2012 11.0)、Microsoft Visual C++バージョン12.0 (.NET 2013 12.0)およびMicrosoft Visual Studio 2010 STLでのIntel 12.1 Cコンパイラでアプリケーションを開発するためのOCCIライブラリが含まれています。Microsoft Visual C++バージョン8.0およびバージョン9.0はサポート対象外となりました。
Microsoft Visual C++バージョン10.0ライブラリは、次のデフォルトの場所にインストールされています。
ORACLE_BASE\ORACLE_HOME\bin\oraocci12.dll ORACLE_BASE\ORACLE_HOME\oci\lib\msvc\oraocci12.lib
また、これらの2つのファイルのコピーが、次のディレクトリにインストールされています。
ORACLE_BASE\ORACLE_HOME\oci\lib\msvc\vc10
Microsoft Visual C++ 2012 OCCIライブラリは、次のデフォルトの場所にインストールされています。
ORACLE_BASE\ORACLE_HOME\oci\lib\msvc\vc11
MSVC++ 2012でOCCIアプリケーションを開発する場合は、リンクおよび実行のために、OCCIライブラリがこのディレクトリから適切に選択されていることを確認します。
Microsoft Visual C++ 2013 OCCIライブラリは、次のデフォルトの場所にインストールされています。
ORACLE_BASE\ORACLE_HOME\oci\lib\msvc\vc12
MSVC++ 2013でOCCIアプリケーションを開発する場合は、リンクおよび実行のために、OCCIライブラリがこのディレクトリから適切に選択されていることを確認します。
アプリケーションは、適切なOCCIライブラリとリンクする必要があります。対応するDLLがWindowsシステムPATHに置かれていることを確認してください。
MSVCRTD.DLL
とリンクされるアプリケーション(Microsoft C-Runtimeのデバッグ・バージョン、/MDd
コンパイラ・フラグ)は、これらの特定のOCCIライブラリ(oraocci12d.lib
およびoraocci12d.dll
)とリンクする必要があります。
すべてのInstant Clientパッケージに、Microsoft Visual C++バージョン10.0互換バージョンのOCCI DLLが含まれています。