ヘッダーをスキップ
Oracle® Database JDBC開発者ガイド
12cリリース1 (12.1)
B71308-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

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アプリケーションに対して完全に透過的です。結果セット・データのキャッシュは、結果セットに影響を与えるすべてのセッションまたはデータベース変更と一致するように維持されています。

  • 表注釈を使用すると、クライアント側の結果セットがJDBCアプリケーションに対して透過的に動作します。そうでない場合、ヒントを使用してこれを有効にします。キャッシュ・ヒットはサーバーへの問合せとラウンドトリップの実行を回避して、結果セットを取得します。このため、サーバーCPUやサーバーI/Oなどのサーバー・リソースにとって、非常に大きなパフォーマンスの節約になります。


    関連項目:

    表注釈およびSQLヒント

  • 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 employees where employee_id < : 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 employees where employee_id < : 1に注釈として付けられています。したがって、問合せは最初にデータベースに対して実行され、その結果セットが、問合せの残り9回の実行用にキャッシュされます。これにより、アプリケーションのパフォーマンスは大幅に向上します。これは主として読取り専用データの場合に便利です。

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

ALTER TABLE dept result_cache (MODE FORCE);

  • SELECT * FROM employees

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

  • SELECT * FROM departments

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

  • SELECT /*+ result_cache */ employee_id FROM employees

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

  • SELECT /*+ no_result_cache */ department_id FROM departments

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

  • SELECT /*+ result_cache */ * FROM departments

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

  • SELECT e.first_name FROM employees e, departments d WHERE e.department_id = d.department_id

    問合せヒントが使用不可で、すべての表が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のクライアント側ファイルを示しています。この表で、Oracle Database 12cリリース1 (12.1)のライブラリ名を使用しています。ライブラリ名の数字の部分は、リリースに応じて将来変更されます。

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

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

libclntsh.so.12.1

libclntshcore.so.12.1脚注1 

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

oci.dll

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

libociei.so脚注2 

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

oraociei12.dll

データとコード

libnnz12.so

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

orannzsbb12.dll

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

libocijdbc12.so

OCI Instant Client JDBCライブラリ

ocijdbc12.dll

OCI Instant Client JDBCライブラリ

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

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

すべてのJDBC JARファイル

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


脚注1 Oracle Database 12c リリース1以降、libclntshcore.so.12.1ライブラリは、libclntsh.so.12.1ライブラリおよびデータ共有ライブラリとは別個になっています。

脚注2 libclntsh.so.12.1ライブラリ、libclntshcore.so.12.1ライブラリおよびlibociei.soライブラリは、インスタント・クライアント・モードで動作するために同じディレクトリ内に存在する必要があります。


注意:

ネイティブXA機能を提供するには、JDBC XAクラス・ライブラリをコピーする必要があります。UNIXシステムでは、このライブラリlibheteroxa12.soORACLE_HOME/jdbc/libディレクトリに格納されています。Microsoft Windowsでは、このライブラリheteroxa12.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アプリケーションを実行する準備が整いました。

Instant Clientを使用する場合、JDBC OCIアプリケーションはOCIおよびJDBC共有ライブラリにライブラリ・パス環境変数を介してアクセスできます。この場合、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.12.1libocijdbc12.soおよびlibnnz12.soは、$ORACLE_HOME/libに格納されます。

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

Microsoft Windowsの場合:

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

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

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

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


注意:

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

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

  • Sparc64などのハイブリッド・プラットフォームでは、JDBC OCIドライバでInstant Clientライブラリを使用する必要がある場合、libociei.soライブラリをORACLE_HOME/instantclient32ディレクトリからコピーする必要があります。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.12.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)の場所と異なり、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:orcl"
    
  • 次のようなSQL接続URL文字列の場合:

    //host:[port][/service_name]
    

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

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

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

構成ファイルの格納先として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=5221)))

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

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

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

または

url = "jdbc:oracle:oci:@//server6:5221/rdbms3.server6.com"

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

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

または

setenv TWO_TASK //server6:5221/rdbms3.server6.com

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

url = "jdbc:oracle:oci:@"

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

conn_str = (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=server6)(PORT=5221))
                (CONNECT_DATA=(SERVICE_NAME=rdbms3.server6.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は無視されます。

ORA_TZFILE変数が設定されていない場合、Instant Clientでは、デフォルト設定のサイズの大きい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)

Solaris

libociei.so(67MB)

libociicus.so(4MB)

Linux

libociei.so(67MB)

libociicus.so(4MB)

Microsoft Windows

oraociei12.dll (85MB)

oraociicus12.dll (15MB)


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

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

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環境変数のoraociei12.dllデータ共有ライブラリを検索して、アプリケーションがInstant Clientを使用するかどうかを判断します。このライブラリが見つからない場合、OCIは、Instant Client Lightのデータ共有ライブラリ、つまりUNIXシステムではlibociicus.so、Microsoft Windowsではlibociicus12.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パッケージをダウンロードして解凍します。解凍する前に、軽量ライブラリを解凍するディレクトリを空にしてください。

  • Client Admin Installから

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

  • Oracle Universal Installerから

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

    たとえば、Oracle Universal InstallerによってLD_LIBRARY_PATH環境変数のmy_oraic_12_1ディレクトリにInstant Clientをインストールした場合、Instant Client Lightを使用するには、次のコマンドを実行する必要があります。

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

    注意:

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