ヘッダーをスキップ
Oracle Database JDBC開発者ガイド
11gリリース2(11.2)
B56281-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

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

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

OCI接続プーリング

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

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

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


関連項目:

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

この項の内容は次のとおりです。

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

OCIクライアント側結果セット・キャッシュには次のような利点があります。

  • JDBC OCIクライアント側結果セット・キャッシュは、OCIアプリケーションに対して完全に透過的です。結果セット・データのキャッシュは、結果セットに影響を与えるすべてのセッションまたはデータベース変更と一致するように維持されています。

  • 結果セットはクライアント側にあるため、キャッシュ・ヒットが起こると、サーバーへのラウンドトリップが行われるのではなく、SQL問合せが実行され、ローカルに処理するようにフェッチがコールされます。このため、サーバーCPUやサーバーI/Oなどのサーバー・リソースにとって、非常に大きなパフォーマンスの節約になります。

  • JDBC OCIクライアント上の結果キャッシュはプロセスごとのものであるため、複数のクライアント・セッションで、キャッシュされた一致している結果セットを同時に使用できます。

  • JDBC OCIクライアントの結果キャッシュにより、各OCIアプリケーションが独自のカスタム結果セット・キャッシュを持つ必要性が最小限に抑えられます。

  • JDBC OCIクライアントの結果キャッシュではOCIクライアント・メモリーが使用され、サーバー・メモリーよりコストが低くなります。

JDBCでの使用ガイドライン

結果キャッシュを有効化するには次の2つの方法があります。


注意:

  • JDBC OCIクライアント結果キャッシュを使用する際は、JDBC文キャッシュを使用するか、またはキャッシュ文をアプリケーション・レベルで使用する必要があります。JDBC文キャッシュの詳細は、「文キャッシュと結果セット・キャッシュ」を参照してください。

  • SQLヒントは、セッション・パラメータRESULT_CACHE_MODEおよび表注釈よりも優先されます。表注釈FORCEはセッション・パラメータよりも優先されます。


RESULT_CACHE_MODEパラメータ

RESULT_CACHE_MODEパラメータを使用して、問合せで使用する表の結果キャッシュ・モードを決定できます。ALTER SESSIONおよびALTER SYSTEM文でこの句を使用するか、またはサーバー・パラメータ・ファイル(init.ora)内でこの句を使用して、結果キャッシュを決定します。RESULT_CACHE_MODEパラメータを設定して、SQL問合せ結果キャッシュをすべての問合せで使用するか、SQLヒントまたは表注釈を使用して結果キャッシュ・ヒントで注釈を付けられている問合せのみで使用するかを制御できます。

表注釈

表注釈を使用して、コードを変更しないで結果キャッシュを有効にできます。ALTER TABLEおよびCREATE TABLE文を使用すると、結果キャッシュ・モードで表に注釈を付けることができます。構文は次のとおりです。

CREATE|ALTER TABLE [<schema>.]<table> ... [RESULT_CACHE (MODE {FORCE|DEFAULT})]

次の例では、CREATE TABLE文で表注釈を使用する方法を示しています。

CREATE TABLE foo (a NUMBER, b VARCHAR2(20)) RESULT_CACHE (MODE FORCE);

次の例では、ALTER TABLE文で表注釈を使用する方法を示しています。

ALTER TABLE foo RESULT_CACHE (MODE DEFAULT);

SQLヒント

SQLヒントを使用し、/*+ result_cache */または/*+ no_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回の実行用にキャッシュされます。これにより、アプリケーションのパフォーマンスは大幅に向上します。これは主として読取り専用データの場合に便利です。

SQLヒントの例を次に示します。次の例はすべて、dept表が結果キャッシュのために次のコマンドによって注釈を付けられていることを前提にしています。

ALTER TABLE dept result_cache (MODE FORCE);

  • SELECT * FROM emp

    結果セットはキャッシュされません。

  • SELECT * FROM dept

    結果セットはキャッシュされます。

  • SELECT /*+ result_cache */ empno FROM emp

    結果セットはキャッシュされます。

  • SELECT /*+ no_result_cache */ deptno FROM dept

    結果セットはキャッシュされません。

  • SELECT /*+ result_cache */ * FROM dept

    問合せヒントは不要ですが、結果セットはキャッシュされます。

  • SELECT e.ename FROM emp e, dept d WHERE e.deptno = d.deptno

    問合せヒントが使用不可で、すべての表がFORCEとして注釈を付けられていないため、結果セットはキャッシュされません。


注意:

使用ガイドライン、クライアント・キャッシュの整合性、デプロイ時間の設定、クライアント・キャッシュ統計情報、クライアント結果キャッシュの検証およびOCIクライアント結果キャッシュとサーバー結果キャッシュの詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』を参照してください。

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

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

OCIネイティブXA

JDBC OCIには、ネイティブXAと呼ばれる機能も用意されています。この機能により、ネイティブAPIを使用してXAコマンドを送信できます。非ネイティブAPIと比較して、ネイティブAPIを使用するほうが、高いパフォーマンスを達成できます。

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.2のライブラリ名を使用しています。ライブラリ名の数字の部分は、リリースに応じて将来変更されます。

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

LinuxシステムとUNIXシステム LinuxシステムとUNIXシステムの場合の説明 Microsoft Windows Microsoft Windowsの場合の説明

libclntsh.so.11.2

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

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の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.2libocijdbc11.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のインストール手順」を参照してください。

個々のファイルをコピーするかわりに、「データ共有ライブラリとZIPファイルの再生成」の説明に従って、OCI、OCCI、JDBCおよびSQL*Plus用のInstant Client ZIPファイルを生成できます。次に、「JDBC OCI Instant Clientのインストール・プロセス」に従って、ZIPファイルをターゲット・コンピュータにコピーして解凍できます。

opatchユーティリティは、libclnstsh.so.11.2ORACLE_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)の場所と異なり、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環境変数の値は使用されません。

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

データベース・サーバー上の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環境変数は、NLS、COREおよびエラー・メッセージ・ファイルの位置を決定するものではなくなりました。OCIのみのアプリケーションでは、ORACLE_HOME環境変数を設定する必要はありません。ただし、変数が設定されていても、OCIドライバの動作に影響はありません。OCIドライバは、常にデータ共有ライブラリからドライバのデータを入手します。データ共有ライブラリが利用できない場合のみ、ORACLE_HOME環境変数が使用され、フル・クライアント・インストールとみなされます。ORACLE_HOME環境変数は設定不要ですが、設定する場合は、ディレクトリを識別する有効なオペレーティング・システム・パス名に設定する必要があります。

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

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

UNIXシステムの場合:

setenv ORA_TZFILE timezone_n.dat

Microsoft Windowsの場合:

set ORA_TZFILE timezone_n.dat

前述の例では、nはタイムゾーン・データファイルのバージョン番号です。

OCIドライバがデータ共有ライブラリを利用できないために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を大幅に小さくしたバージョンです。クライアント・インストールのディスク空き容量要件は、約63MB少なくてすみます。これは、サイズが4MBの軽量データ共有ライブラリ(UNIXシステムの場合libociicus.so)によるもので、これはサイズが67MBのデータ共有ライブラリlibociei.soのサブセットです。

この軽量データ共有ライブラリは、少数のキャラクタ・セットとエラー・メッセージを英語のみでサポートしています。そのため、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は次のいずれかです。

  • シングルバイト

    • 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_2ディレクトリを空にしてください。

  • Client Admin Installから

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