ヘッダーをスキップ
Oracle Database JDBC開発者ガイドおよびリファレンス
11gリリース1(11.1)
E05720-02
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

6 JDBC OCIドライバ固有の機能

この章では、Java Database Connectivity(JDBC)Oracle Call Interface(OCI)ドライバ固有の機能について説明します。OCI Instant Clientについても説明します。この章では、次の項目について説明します。

OCI接続プーリング

OCI接続プーリング機能は、Oracleが設計した拡張機能です。JDBC OCIドライバで提供される接続プーリングによって、アプリケーションは少数の物理接続を使用して、複数の論理接続を保持できます。この論理接続でのコールは、指定された時間に使用可能な物理接続にルーティングされます。

クライアント結果キャッシュ

クライアント結果キャッシュ機能により、クライアント側でのSQL問合せ結果セットのクライアント・メモリーへのキャッシュが可能になります。このようにして、OCIアプリケーションでは、クライアント・メモリーを使用することで、繰返しの問合せのレスポンス時間を改善するためにクライアント結果キャッシュを利用できます。

JDBCでの使用ガイドライン

結果がクライアント結果キャッシュに格納されることを示すために、問合せに/*+ result_cache */のヒントで注釈を付ける必要があります。たとえば、次のコードを見てみます。

String  query  = "select /*+ result_cache */ * from emp where empno < : 1";
   ((oracle.jdbc.OracleConnection)conn).setImplicitCachingEnabled(true);
   ((oracle.jdbc.OracleConnection)conn).setStatementCacheSize(10);
   PreparedStatement  pstmt;
   ResultSet rs;

    for (int j = 0 ; j < 10 ; j++ )
    {
       pstmt  = conn.prepareStatement (query);
       pstmt.setInt(1,7500);
       rs  = pstmt.executeQuery();
         while (rs.next( ) )
        {     // see the values  }
          rs.close;
          pstmt.close( ) ;
        }
    }

この例では、クライアント結果キャッシュのヒント/*+ result_cache */が、実際の問合せであるselect * from emp where empno < : 1に注釈として付けられています。したがって、問合せは最初にデータベースに対して実行され、その結果セットが、問合せの残り9回の実行用にキャッシュされます。これにより、アプリケーションのパフォーマンスは大幅に向上します。


関連項目:

『Oracle Call Interfaceプログラマーズ・ガイド』

JDBC OCIクライアント結果キャッシュを使用する際は、JDBC文キャッシュを使用するか、またはキャッシュ文をアプリケーション・レベルで使用する必要があります。


関連項目:

JDBC文キャッシュの詳細は、「文キャッシュと結果セット・キャッシュ」を参照してください。

クライアント結果キャッシュの検証

JDBC OCIクライアント結果キャッシュの検証は、次の方法で実行できます。

クライアント・キャッシュ統計の検証

JDBC OCIドライバからサーバーに、クライアント結果キャッシュ関連の統計が定期的に送信されます。キャッシュに成功した結果セット数、キャッシュ・ヒット数、無効なキャッシュ済結果セット数などの情報を含むこれらの統計は、CLIENT_RESULT_CACHE_STATS$に格納されています。


関連項目:

『Oracle Call Interfaceプログラマーズ・ガイド』

タイミング測定

まず、/*+ result_cache */のヒントの付いていない問合せの実行にかかる時間を測定します。次に問合せに/*+ result_cache */のヒントを追加し、再び時間を測定します。これにより、パフォーマンスの向上を確認できます。

透過的アプリケーション・フェイルオーバー

JDBC OCIドライバの透過的アプリケーション・フェイルオーバー機能を使用すると、接続先のデータベース・インスタンスがダウンした場合でも、データベースに自動的に再接続できます。別のノードで作成されても、新しいデータベース接続は元の接続とまったく同じです。

OCIネイティブXA

JDBC OCIには、ネイティブXAと呼ばれる機能も用意されています。

OCI Instant Client

この項には、次の項目が含まれます。

Instant Clientの概要

Instant Client機能を使用すると、Oracleホームの必要性がなくなり、OCI、Oracle C++ Call Interface(OCCI)、Open Database Connectivity(ODBC)およびJDBC-OCIベースのカスタマ・アプリケーションのデプロイが非常に簡単になります。Instant Clientモードで実行するJDBC OCIアプリケーションに必要な記憶域の容量は、クライアント側に完全にインストールして実行するアプリケーションに比べて少なくなります。Instant Clientの共有ライブラリに使用されるディスク領域は、クライアント側に完全にインストールした場合の約1/4です。

表6-1は、JDBC OCIアプリケーションのデプロイに必要なOracleのクライアント側ファイルを示しています。この表では、リリース11.1のライブラリ名を使用しています。ライブラリ名の数字の部分は、リリースに応じて将来変更されます。

表6-1 OCI Instant Client共有ライブラリ

LinuxシステムとUNIXシステム LinuxシステムとUNIXシステムの場合の記述 Microsoft Windows Microsoft Windowsの場合の記述

libclntsh.so.11.1

クライアント・コード・ライブラリ

oci.dll

アプリケーションがリンクする各機能の転送

libociei.so

OCI Instant Clientデータ共有ライブラリ

oraociei11.dll

データとコード

libnnz11.so

セキュリティ・ライブラリ

orannzsbb11.dll

セキュリティ・ライブラリ

libocijdbc11.so

OCI Instant Client JDBCライブラリ

ocijdbc11.dll

OCI Instant Client JDBCライブラリ

すべてのJDBC Javaアーカイブ(JAR)ファイル

関連項目: 「環境変数の確認」

すべてのJDBC JARファイル

関連項目: 「環境変数の確認」



注意:

ネイティブXA機能を提供するには、JDBC XAクラス・ライブラリをコピーする必要があります。UNIXシステムでは、このライブラリlibheteroxa11.soORACLE_HOME/jdbc/libディレクトリに格納されています。Microsoft Windowsでは、このライブラリheteroxa11.dllORACLE_HOME\binディレクトリに格納されています。

Instant Clientの利点

Instant Clientには次のような利点があります。

  • インストール時にコピーされるファイルの数がそれほど多くありません。

  • Oracleのクライアント側で必要なファイルの数と合計ディスク領域が大幅に減少します。

  • Instant Clientでデプロイされたアプリケーションでは、機能またはパフォーマンスに損失がありません。

  • サード・パーティのソフトウェア・ベンダーがアプリケーションを簡単にパッケージ化できます。

JDBC OCI Instant Clientのインストール手順

Instant Clientライブラリは、Oracle Universal InstallerでInstant Clientオプションを選択するとインストールできます。Oracle Technology Network JapanのWebサイトからダウンロードすることもできます。インストールの手順は、次のとおりです。

  1. Instant Client共有ライブラリおよびOracle JDBCクラス・ライブラリをダウンロードし、instantclientなどのディレクトリにインストールします。

  2. ライブラリ・パスの環境変数を、手順1のディレクトリに設定します。たとえば、UNIXシステムでは、LD_LIBRARY_PATH環境変数をinstantclientに設定します。Microsoft Windowsでは、PATH環境変数をinstantclientディレクトリに設定します。

  3. CLASSPATH環境変数に、JDBCクラス・ライブラリの完全パス名を追加します。

これで、JDBC OCIアプリケーションを実行する準備が整いました。

JDBC OCIアプリケーションは、ライブラリ・パスの環境変数を介してOCI共有ライブラリおよびJDBC共有ライブラリにアクセスできる場合、Instant Clientモードで動作します。Instant ClientモードではORACLE_HOMEへの依存性はなく、ORACLE_HOMEに用意されている他のコードおよびデータ・ファイルは、tnsnames.oraファイルを除いて、JDBC OCIには不要です。

Instant Clientは、Oracle Universal InstallerでInstant Clientオプションを選択するとインストールできます。Instant Clientファイルは、必ず空のディレクトリにインストールしてください。Instant Clientモードで動作するには、OTNのインストールと同じように、LD_LIBRARY_PATH環境変数をInstant Clientディレクトリに設定する必要があります。

管理者オプションを選択して完全なクライアント・インストールを実行した場合は、Instant Client共有ライブラリもインストールされます。完全なクライアント・インストールでは、Instant Client共有ライブラリおよびJDBCクラスは次の場所に格納されます。

LinuxシステムまたはUNIXシステムの場合:

  • libociei.soライブラリは、$ORACLE_HOME/instantclientに格納されます。

  • libclnstsh.so.11.1libocijdbc11.soおよびlibnnz11.soは、$ORACLE_HOME/libに格納されます。

  • JDBCクラス・ライブラリは、$ORACLE_HOME/jdbc/libに格納されます。

Microsoft Windowsの場合:

  • oraociei11.dllライブラリはORACLE_HOME\instantclientに格納されます。

  • oci.dllocijdbc11.dllおよびorannzsbb11.dllは、ORACLE_HOME\binに格納されます。

  • JDBCクラス・ライブラリはORACLE_HOME\jdbc\libに格納されます。

これらのファイルを別のディレクトリにコピーし、そのディレクトリにライブラリ・パスを設定し、JDBCクラス・ライブラリのパス名をCLASSPATH環境変数に追加すると、JDBC OCIアプリケーションをInstant Clientモードで実行できます。


注意:

  • ネイティブXA機能を提供するには、JDBC XAクラス・ライブラリをコピーする必要があります。UNIXでは、このライブラリlibheteroxa11.soORACLE_HOME/jdbc/libに格納されています。Windowsでは、このライブラリheteroxa11.dllORACLE_HOME\binに格納されています。

  • すべてのライブラリは、同じORACLE_HOMEからコピーし、同じディレクトリに格納する必要があります。

  • Instant Clientモードで操作するJDBC OCIドライバが、Sparc64などのハイブリッド・プラットフォームで必要な場合は、ORACLE_HOME/instantclient32ディレクトリからlibociei.soライブラリをコピーする必要があります。JDBC OCI Instant Clientに必要なその他すべてのSparc64ライブラリは、ORACLE_HOME/lib32ディレクトリからコピーしてください。

  • ライブラリ・パス環境変数で、Oracleライブラリのセットを1つのみ指定する必要があります。つまり、複数のディレクトリにInstant Clientライブラリが含まれている場合、ライブラリ・パス環境変数で、該当するディレクトリを1つだけ指定します。

  • コンピュータ上でOracleホームを使用している場合、ライブラリ・パス環境変数での指定順序に関係なく、ライブラリ・パス環境変数でORACLE_HOME/libとInstant Clientディレクトリを同時に使用しないでください。つまり、ライブラリ・パス環境変数で、ORACLE_HOME/libディレクトリ(Instant Client以外で動作している場合)またはInstant Clientディレクトリ(Instant Clientで動作している場合)のいずれか一方のみを指定します。

  • Instant Clientは、Oracle Technology Network(OTN)からダウンロードすることをお薦めします。

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


Instant Clientの使用

Instant Clientはデプロイメント用の機能であるため、本番アプリケーションの実行に使用します。デプロイメントでは、デモ用のプログラムなどにアクセスできるようにするために、完全インストールが必要です。一般的に、Instant Clientモードがクライアント側動作専用でないかぎり、Instant Clientモードで実行されているアプリケーションではすべてのJDBC OCI機能を使用できます。したがって、サーバー側の外部プロシージャは、Instant Clientモードでは動作しません。

Instant Client共有ライブラリのパッチ

Instant Clientはデプロイメント用の機能であるため、JDBC OCIアプリケーションの実行に必要なファイルの数とサイズの減少に重点が置かれています。したがって、Instant Client共有ライブラリのパッチに必要なすべてのファイルがInstant Clientのデプロイ時に揃っているわけではありません。Instant Client共有ライブラリのパッチには、ORACLE_HOMEベースの完全クライアント・インストールが必要です。opatchユーティリティを使用して、Instant Client共有ライブラリにパッチを適用します。


注意:

Microsoft Windowsでは、共有ライブラリにパッチを適用できません。

ORACLE_HOME環境でパッチを適用した後、表6-1「OCI Instant Client共有ライブラリ」にリストされているファイルをInstant Clientディレクトリにコピーします。「JDBC OCI Instant Clientのインストール手順」を参照してください。

個々のファイルをコピーするのではなく、OCI、OCCI、JDBCおよびSQL*PlusにInstant Client ZIPファイルを作成できます。「データ共有ライブラリとZIPファイルの再生成」を参照してください。その後、これらの各ZIPファイルをターゲット・コンピュータにコピーして解凍します。「JDBC OCI Instant Clientのインストール手順」を参照してください。

opatchユーティリティは、libclnstsh.so.11.1ORACLE_HOMEインストールのパッチ情報を格納します。次のコマンドを使用すると、この情報を取り出すことができます。

genezi -v

Instant Clientのデプロイ元のコンピュータにgeneziユーティリティが装備されていない場合、ORACLE_HOMEインストールが装備されたコンピュータ上のORACLE_HOME/binディレクトリからコピーする必要があります。

データ共有ライブラリとZIPファイルの再生成

ORACLE_HOMEを管理者オプションでインストールした場合は、次の手順を実行して、OCI Instant Clientデータ共有ライブラリ(libociei.so)を再生成できます。

mkdir -p $ORACLE_HOME/rdbms/install/instantclient/light
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk ilibociei

ORACLE_HOME内の現行ファイルに基づく新しいバージョンのlibociei.soデータ共有ライブラリが、ORACLE_HOME/rdbms/install/instantclientディレクトリに配置されます。

再生成したデータ共有ライブラリlibociei.soの場所は、元のデータ共有ライブラリlibociei.soの場所と異なるので注意が必要です。元のデータ共有ライブラリlibociei.soは、ORACLE_HOME/instantclientディレクトリに配置されています。前述の手順を実行すると、OCI、OCCI、JDBCおよびSQL*Plusに対応したInstant Client ZIPファイルも生成されます。

Microsoft Windowsプラットフォームでは、データ共有ライブラリとZIPファイルを再生成することはできません。

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

tnsnames.orasqlnet.oraなどの構成ファイルの格納先としてORACLE_HOMEまたはTNS_ADMIN環境変数を使用しないOracle Netネーミング・メソッドは、すべてInstant Clientモードで動作します。特に、接続文字列は次のような形式で指定できます。

  • 次のようなThin形式の接続文字列の場合:

     host:port:service_name
    

    たとえば、次のようになります。

    url="jdbc:oracle:oci:@//example.com:5521:bjava21"
    
  • 次のようなSQL接続URL文字列の場合:

    //host:[port][/service name]
    

    たとえば、次のようになります。

    url="jdbc:oracle:oci:@//example.com:5521/bjava21
    
  • Oracle Netのキーワードと値のペアについては、たとえば、次のようになります。

    url="jdbc:oracle:oci:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)
      (HOST=dlsun242) (PORT=5521))
      (CONNECT_DATA=(SERVICE_NAME=bjava21)))"
    

構成ファイルの格納先としてTNS_ADMINが必要なネーミング・メソッドをそのまま使用するには、TNS_ADMIN環境変数を設定します。


関連項目:

接続フォーマットの詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

TNS_ADMIN環境変数を設定せずに、inst1などのTNSNAMESエントリを使用する場合は、ORACLE_HOME環境変数を設定し、構成ファイルを$ORACLE_HOME/network/adminディレクトリに格納する必要があります。


注意:

この場合、ORACLE_HOME環境変数は、Oracle Net構成ファイルの格納先としてのみ使用されます。それ以外のクライアント・コード・ライブラリでは、ORACLE_HOME環境変数の値は使用されません。

空の接続文字列はサポートされていません。ただし、空の接続文字列を使用可能にする代替方法はあります。UNIXシステムではTWO_TASK環境変数を、Microsoft WindowsではLOCAL変数を、tnsnames.oraエントリまたはOracle Netのキーワードと値のペアのいずれかに設定します。TWO_TASKまたはLOCALtnsnames.oraエントリに設定すると、tnsnames.oraファイルをTNS_ADMINまたはORACLE_HOMEの設定によってロードする必要があります。

データベース・サーバー上のlistener.oraファイルに次の情報が格納されているとします。

LISTENER = (ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=server6)(PORT=1573)))

SID_LIST_LISTENER = (SID_LIST=
                     (SID_DESC=(SID_NAME=rdbms3)
                     (GLOBAL_DBNAME=rdbms3.server6.us.alchemy.com)
                     (ORACLE_HOME=/home/dba/rdbms3/oracle)))

このサーバーには、次のいずれかの方法で接続できます。

url = "jdbc:oracle:oci:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)
                     (HOST=server6)(PORT=1573))
                     (CONNECT_DATA=(SERVICE_NAME=rdbms3.server6.us.alchemy.com)))"

または

url = "jdbc:oracle:oci:@//server6:1573/rdbms3.server6.us.alchemy.com"

または、TWO_TASK環境変数を任意の接続文字列に設定すれば、sqlplusコマンドとともに接続文字列を指定しなくても、データベース・サーバーに接続できます。たとえば、次の方法のいずれかを使用してTWO_TASK環境変数を設定します。

setenv TWO_TASK "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=server6)(PORT=1573))
                 (CONNECT_DATA=(SERVICE_NAME=rdbms3.server6.us.alchemy.com)))"

または

setenv TWO_TASK //server6:1573/rdbms3.server6.us.alchemy.com

これで、次のURLを使用すると、データベース・サーバーに接続できます。

url = "jdbc:oracle:oci:@"

接続文字列は、tnsnames.oraファイルに格納できます。たとえば、tnsnames.oraファイルに次の情報が格納されているとします。

conn_str = (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=server6)(PORT=1573))
                (CONNECT_DATA=(SERVICE_NAME=rdbms3.server6.us.alchemy.com)))

このtnsnames.oraファイルが/home/webuser/instantclientディレクトリに配置されている場合、次のように、TNS_ADMIN環境変数(または、Microsoft WindowsではLOCAL)を設定できます。

setenv TNS_ADMIN /home/webuser/instantclient

これで、次のように接続できます。

url = "jdbc:oracle:oci:@conn_str"

注意:

TNS_ADMIN環境変数では、tnsnames.oraファイルが配置されているディレクトリを指定します。ただし、TNS_ADMINでは、tnsnames.oraファイルのフルパスを指定するのではなく、ディレクトリを指定します。

このtnsnames.oraファイルが、Oracleホームの/network/server6/home/dba/oracle/network/adminディレクトリに配置されている場合、TNS_ADMINを使用してtnsnames.oraファイルを配置するかわりに、次のようにORACLE_HOME環境変数を使用できます。

setenv ORACLE_HOME /network/server6/home/dba/oracle

これで、先に指定したように、接続文字列conn_strのいずれかを使用して接続できます。

TNS_ADMINまたはORACLE_HOMEによってtnsnames.oraを特定できる場合、TWO_TASKは次のように設定できます。

setenv TWO_TASK conn_str

次のURLで接続できます。

url = "jdbc:oracle:oci:@"

OCI Instant Clientの環境変数

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

Instant Clientモードの場合、環境変数ORA_NLS10およびORA_NLSPROFILES33は無視されます。

Instant Clientモードでは、ORA_TZFILE変数を使用しない場合、サイズの小さいデフォルトのtimezone.datファイルがデータ共有ライブラリから使用されます。サイズの大きいtimezlrg.datファイルをデータ共有ライブラリから使用する場合は、絶対または相対パス名を付けずに、このファイルの名前をORA_TZFILE環境変数に設定します。つまり、次のように設定します。

UNIXシステムの場合:

setenv ORA_TZFILE timezlrg.dat

Microsoft Windowsの場合:

set ORA_TZFILE timezlrg.dat

ドライバがInstant Clientモードで動作しない場合、ORA_TZFILE変数を設定する際は、以前のOracle Databaseのリリースのときと同様に完全パス名を指定します。

TNSNAMESのエントリを使用する場合は、前述のように、TNS_ADMINディレクトリにTNSNAMES構成ファイルを格納する必要があります。TNS_ADMINを設定しない場合は、ORACLE_HOME/network/adminディレクトリにOracle Net Services構成ファイルを格納する必要があります。

Instant Client Light(English)

軽量バージョンのInstant Clientは、Instant Client Light(English)と呼ばれます。Instant Client Lightはその略称です。Instant Client Lightは、Instant Clientを大幅に軽量化したバージョンです。Instant Client Lightを使用することで、クライアント・インストールに必要なディスク領域が約63MB少なくなります。UNIXシステムの場合、これは、軽量データ共有ライブラリlibociicus.soによって実現されます。このライブラリは、サイズが4MBであり、データ共有ライブラリlibociei.so(サイズは67MB)のサブセットです。

この軽量データ共有ライブラリは、少数のキャラクタ・セットとエラー・メッセージを英語のみでサポートしています。そのため、Instant Client Light(English)という名前が付いています。Instant Client Lightは、英語のエラー・メッセージのみを必要とし、US7ASCIIかWE8DEC、またはUnicodeキャラクタ・セットの1つを使用するアプリケーションに対応して設計されています。

表6-2に、様々なプラットフォームにおけるInstant ClientとInstant Client Light(English)用のデータ共有ライブラリ名をリストします。この表では、各データ共有ライブラリのサイズをライブラリ・ファイル名に続くカッコ内に記載しています。

表6-2 Instant ClientとInstant Client Light(English)用のデータ共有ライブラリ

プラットフォーム Instant Client Instant Client Light(English)

Sun Solaris

libociei.so(67MB)

libociicus.so(4MB)

Linux

libociei.so(67MB)

libociicus.so(4MB)

Microsoft Windows

oraociei11.dll(85MB)

oraociicus11.dll(15 MB)


この項には、次の項目が含まれます。

グローバリゼーション設定

NLS_LANG設定は、言語、地域およびキャラクタ・セットをlanguage_territory.charactersetで判断します。Instant Client Lightでは、languageAmericanのみであり、territoryはサポートされる地域すべてが対象です。charactersetは、次のいずれか1つになります。

  • シングルバイト

    • US7ASCII

    • WE8DEC

    • WE8MSWIN1252

    • WE8ISO8859P1

  • Unicode

    • UTF8

    • AL16UTF16

    • AL32UTF8

クライアントやサーバーのキャラクタ・セットとしてリストされている以外のキャラクタ・セットまたは各国語キャラクタ・セットを指定したり、クライアントのNLS_LANGに言語を設定したりすると、次のエラーが発生します。

  • ORA-12734

  • ORA-12735

  • ORA-12736

  • ORA-12737

Instant Client Lightでは、エラー・メッセージは英語でのみ出力されます。したがって、NLS_LANG設定に有効な値は、次のようになります。

American_territory.characterset

territoryにはサポートされる有効な地域を、charactersetには前述のいずれかのキャラクタ・セットを指定できます。

Instant Client Lightは、OCI_UTF16モードで作成されたOCI環境ハンドルを使用して動作します。


関連項目:

NLS設定の詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

動作

Instant Client Lightモードで動作するには、アプリケーションで、UNIXシステムの場合はLD_LIBARARY_PATH環境変数を、Microsoft Windowsの場合はPATH環境変数を、クライアントおよびデータ共有ライブラリが格納されている場所に設定する必要があります。OCIアプリケーションは、デフォルトでOCIデータ共有ライブラリ、つまりUNIXシステムではLD_LIBRARY_PATH環境変数のlibociei.so、Microsoft WindowsではPATH環境変数のoraociei11.dllデータ共有ライブラリを検索して、アプリケーションがInstant Clientモードで動作するかどうかを判断します。このライブラリが見つからない場合、OCIは、Instant Client Lightのデータ共有ライブラリ、つまりUNIXシステムではlibociicus.so、Microsoft Windowsではlibociicus11.dllをロードしようとします。このライブラリが見つかった場合、アプリケーションはInstant Client Lightモードで動作します。このライブラリが見つからない場合は、Instant Client以外のモードとなります。

インストール

Instant Client Lightは、次のいずれかの方法でインストールできます。

  • OTNから

    次のサイトから必要なファイルをダウンロードできます。

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

    Instant Client Lightの場合は、Basicパッケージをダウンロードして展開するかわりに、Basic Lightパッケージをダウンロードして解凍します。解凍する前に、軽量ライブラリを解凍するinstantclient_11_1ディレクトリを空にしてください。

  • インストールされたクライアント(管理者)から

    libociei.soまたはoraociei11.dllORACLE_HOME/instantclientディレクトリからコピーするかわりに、libociicus.soまたはoraociic10.dllORACLE_HOME/instantclient/lightディレクトリからコピーします。つまり、UNIXシステムの場合、LD_LIBRARY_PATH環境変数のInstant Clientディレクトリに、大規模なOCI Instant Clientのデータ共有ライブラリlibociei.soではなく、Instant Client Lightのデータ共有ライブラリlibociicus.soを格納してください。Microsoft Windowsの場合、PATH環境変数にはoraociei11.dllではなくoraociei11.dllを指定する必要があります。

  • Oracle Universal Installerから

    Oracle Universal InstallerでInstant Clientオプションを選択すると、libociei.so(Microsoft Windowsの場合はoraociei11.dll)が、インストールのベース・ディレクトリにインストールされ、LD_LIBRARY_PATH環境変数には、このディレクトリが指定されます。このため、Instant Client Lightはデフォルトでは使用できません。Instant Client Lightのデータ共有ライブラリlibociicus.so(Microsoft Windowsの場合はoraociicus11.dll)は、ベース・ディレクトリのlightサブディレクトリにインストールされます。したがって、Instant Client Lightモードで動作するには、OCIデータ共有ライブラリlibociei.so(Windowsではoraociei11.dll)を削除するか、名前を変更し、Instant Client Lightのデータ共有ライブラリを、インストールのlightサブディレクトリからベース・ディレクトリにコピーする必要があります。

    たとえば、Oracle Universal Installerで、Instant ClientをLD_LIBRARY_PATH環境変数のmy_oraic_11_1ディレクトリにインストールした場合、Instant Client Lightモードで動作するには、次のようにします。

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

    注意:

    Instant Clientファイルは、必ず空のディレクトリにコピーまたはインストールしてください。これは、インストール時に互換性のないバイナリが存在しないようにするためです。