ヘッダーをスキップ
Oracle® C++ Call Interfaceプログラマーズ・ガイド,
11g リリース2 (11.2)
B72452-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

2 インストールとアップグレード

この章では、Oracle C++ Call Interface(OCCI)のインストールとアップグレードの概要を説明します。

ここでは、次の項目について説明します。

Oracle C++ Call Interfaceのインストール

OCCIはOracle Databaseの一部としてインストールされます。構成に関するその他の要件を決定するには、対象のプラットフォームに対応した『Oracle Databaseインストレーション・ガイド』および『Oracle Database Clientインストレーション・ガイド』を参照してください。

アップグレードに関する考慮点

このリリースの新機能を使用するには、Oracleクライアントの以前のリリースからアップグレードする際に、オブジェクト型トランスレータ・ユーティリティで生成されたクラスを含む、すべてのOCCIアプリケーションを再コンパイルし、再リンクする必要があります。

Oracle Databaseバージョンの決定

アプリケーションで、サーバー・バージョンまたはクライアント・パッチセットが異なる複数の異なるコード・パスを使用する場合には、コンパイル時および実行時のどちらでもこれらのオプションを検証できます。

コンパイル時の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

実行時のOracleクライアントおよびサーバーのバージョンの決定

実行時に、getClientVersion()getServerVersion()およびgetServerVersionUString()メソッドを使用して、現行のConnectionのクライアントおよびサーバーのバージョンを両方チェックできます。

Instant Client

Instant Client機能を使用すると、ORACLE_HOMEの必要性がなくなることで、OCCIベースのカスタマ・アプリケーションを非常に簡単に、かつすばやくデプロイできます。もう1つの利点として、記憶領域要件があります。Instant Clientの共有ライブラリは、完全なクライアント・インストールに必要なディスク領域の約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アプリケーションとの相互運用性が確保されます。

Instant Clientのインストール

OCCIには、オペレーティング・システムの動的ローダーによってロードされる4つの共有ライブラリ(一部のオペレーティング・システムではダイナミック・リンク・ライブラリと呼ばれます)のみです。Oracle Database 11g リリース2 (11.2)のライブラリ名が使用されています。ライブラリ名の数字の部分は、将来のリリース番号にあわせて変更されます。

  • 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)。

Oracle Technology Network

Instant Clientライブラリは、OTN (Oracle Technology Network)のWebサイトでも入手できます。

http://www.oracle.com/technology/tech/oci/instantclient/

オペレーティング・システムのライブラリ・パス変数(LinuxおよびUNIXではLD_LIBRARY_PATH、WindowsではPATH)のディレクトリを通じてこれらの4つのライブラリにアクセスできる場合、OCCIはInstant Clientモードで動作します。このモードでは、ORACLE_HOMEへの依存性はありません。ORACLE_HOMEで指定された他のコードおよびデータ・ファイルは、OCCIでは不要です。

OTNからInstant Clientをインストールする場合は、次の手順で行います。

  1. Instant Clientライブラリを、instantclient_11_2などの空のディレクトリにダウンロードしてインストールします。

  2. オペレーティング・システムの共有ライブラリ・パス環境変数(LinuxおよびUNIXではLD_LIBRARY_PATH、WindowsではPATH)を、手順1で使用したディレクトリ、instantclient_11_2に設定します。

Instant Client SDK

Instant Clientは、SDKパッケージとしてダウンロードすることもできます。SDKには、Instant Client環境でOCCIアプリケーションを開発するために必要なすべてのヘッダー・ファイルおよびMakeファイルが含まれています。開発したアプリケーションは、あらゆるクライアント環境にデプロイできます。SDKには、次のような追加の機能があります。

  • C++のデモンストレーション・プログラムが含まれています。

  • Windows上のアプリケーションにリンクするためのライブラリが含まれており、デモンストレーションを作成するためのMake.batファイルが用意されています。

  • LinuxおよびUNIXでデモンストレーションを作成するためのMakeファイルdemo.mkが提供されています。アプリケーションをリンクする前に、LD_LIBRARY_PATHinstantclient_11_2ディレクトリを必ず定義します。これらのプログラムでは、クライアント・コード・ライブラリおよびOCCIライブラリに対するシンボリック・リンク(それぞれlibclntsh.solibocci.so)がinstantclient_11_2ディレクトリに必要になります。デモンストレーション用のMakeファイルdemo.mkでは、リンクの手順の前にこれらのリンクを生成します。これらのシンボリック・リンクは、シェル・スクリプトで作成することもできます。

    cd instantclient_11_2
    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

データベースをインストールしていない場合、これらのライブラリをインストールするには、Oracle Universal InstallerからInstant Clientオプションを選択します。これらの手順が完了すると、OCCIアプリケーションの実行を開始できます。

  1. Instant Client共有ライブラリを、instantclient_11_2などのディレクトリにインストールします。

  2. オペレーティング・システム共有ライブラリ・パスの環境変数を、手順1のディレクトリに設定します。たとえば、LinuxまたはUNIXでは、LD_LIBRARY_PATHinstantclient_11_2に設定します。Windowsでは、PATHinstantclient_11_2ディレクトリがある場所に設定します。

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つのみを定義します。

Instant Clientの使用

Instant Client機能は、本番アプリケーションを実行するために設計されています。開発では、Instant Client SDKまたは完全なインストールを使用して、OCCIヘッダー・ファイル、Makeファイル、デモンストレーション・プログラムなどにアクセスします。

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ファイルをコピーして解凍できます。

データ共有ライブラリおよび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

Instant Clientのデータベース接続名

ORACLE_HOMEまたはTNS_ADMINtnsnames.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管理者ガイド』を参照してください。

OCCI Instant Clientの環境変数

ORACLE_HOME環境変数は、グローバリゼーション・サポート、COREおよびエラー・メッセージ・ファイルの位置を決定するものではなくなりました。OCCI専用アプリケーションでは、ORACLE_HOMEを設定する必要はありません。ただし、設定されている場合でも、OCCIの動作には影響しません。OCCIは、常にデータ共有ライブラリからデータを取得します。データ共有ライブラリを使用できない場合のみORACLE_HOMEが使用され、完全なクライアント・インストールが前提となります。ORACLE_HOMEを設定する場合は、ディレクトリを識別する有効なオペレーティング・システムのパス名にする必要があります。

環境変数ORA_NLS33ORA_NLS32およびORA_NLSは、Instant Clientモードでは無視されます。

Instant Clientモードでは、ORA_TZFILE変数が設定されていない場合、データ共有ライブラリに含まれる、これより大きいデフォルトのtimezlrg_n.datファイル(nはファイルのバージョン番号)が使用されます。データ共有ライブラリに含まれる、これよりサイズの小さいtimezone_n.datファイルを使用する場合は、例2-3に示すように、ORA_TZFILE環境変数を、絶対パス名または相対パス名を含まないこのファイルの名前に設定します。

例2-3 ORA_TZFILE環境変数の設定方法

LinuxおよびUNIXでは次のようになります。

setenv ORA_TZFILE timezone_n.dat

Windowsでは次のようになります。

set ORA_TZFILE timezone_n.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 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)は、名前が示しているように、必要とするエラー・メッセージは英語のみで、US7ASCIIWE8DEC、またはUnicode文字を使用するアプリケーション向けです。Instant Client Light(English)では、NLS_LANG設定を行うTERRITORYフィールドに制約はありません。そのため、これらのキャラクタ・セットおよびTERRITORY基準を満たすアプリケーションをInstant Client Light (English)環境で実行すると、フットプリントを大幅に削減できます。

Instant Client Light (English)のグローバリゼーション設定

Instant Client Light (English)は次のキャラクタ・セットをサポートしています。

  • US7ASCIIWE8DECWE8MSWIN1252およびWE8ISO8859P1を含むシングルバイトのキャラクタ・セット。

  • Unicodeキャラクタ・セットには、UTF8AL16UTF16および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グローバリゼーション・サポート・ガイド』を参照してください。

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の完全インストールとみなされます。

Instant Client Light (English)のインストール

Instant Client Light (English)をインストールするには3つの方法があります。OTNのダウンロード・ページからのインストール、Client Admin Installを介したインストール、Oracle Universal Installerを介したインストールです。

Instant ClientおよびInstant Client Light (English)のすべてのファイルは、必ず空のディレクトリにコピーまたはインストールして、最終的なインストールで互換性のないバイナリが生じないようにします。

OTNのダウンロード・ページ

OTNからInstant Client Light (English)をインストールする場合は、通常のbasic.zipパッケージのかわりにbasiclite.zipパッケージをダウンロードして解凍します。ライブラリを解凍する前に、instantclient_11_2ディレクトリが空であることを必ず確認してください。ダウンロードできるパッケージは、OTNの次のURLにあります。

http://www.oracle.com/technology/tech/oci/instantclient/

Client Admin Install

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

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ではPATHoraociicus11.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_PATHmy_oraic_11_1ディレクトリにインストールした場合、次のコマンドを実行して、Instant Client Light (English)モードでの操作を確認します。互換性のないバイナリ・ファイルの使用を避けるために、Instant Clientファイルはすべて空のディレクトリにコピーしてインストールします。

cd my_oraic_11_1
rm libociei.so
mv light/libociicus.so .

Microsoft Visual C++でのOCCIの使用

Oracle Database 11g リリース1には、Microsoft Visual C++バージョン8.0(.NET 2005)およびMicrosoft Visual C++バージョン7.1(.NET 2003)によりアプリケーションを開発するためのOCCIライブラリが含まれます。Microsoft Visual C++バージョン7.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++ 8.0固有のライブラリ・バージョンは、次のディレクトリにインストールされています。

ORACLE_BASE\ORACLE_HOME\oci\lib\msvc\vc8

アプリケーションは、適切なOCCIライブラリとリンクする必要があります。対応するDLLがWindowsシステムPATHに置かれていることを確認してください。

MSVCRTD.DLLとリンクされるアプリケーション(Microsoft C-Runtimeのデバッグ・バージョン、/MDdコンパイラ・フラグ)は、これらの特定のOCCIライブラリ(oraocci11d.libおよびoraocci11d.dll)とリンクする必要があります。

すべてのInstant Clientパッケージに、Microsoft Visual C++バージョン7.1互換バージョンのOCCI DLLが含まれています。