インスタントクライアントとは
インスタントクライアントとは10g以降に提供されているORACLEデータベースに接続するためのライブラリ(OCIライブラリ)の最小構成です。以下のような特徴を持っています。- インストール不要で解凍するだけで即使用できる
- 軽量で通常のクライアントメディアからインストールした場合よりも必要なDISK容量が少ない
- 接続に必要な機能以外は一切省かれておりセキュリティ対策の一環になる
入手方法
インスタントクライアントはOTNよりダウンロード可能で2011年4月現在では以下よりダウンロードできます。Instant Clientのダウンロード
インスタントクライアントは用途に応じて複数のファイルに分かれているため必要なファイルのみをダウンロードします。以下は11.2.0.1.0のwindows x86で提供されている一覧です。
・instantclient-basic-win32-11.2.0.1.0.zip
・instantclient-basiclite-win32-11.2.0.1.0.zip
この二つのどちらかはインスタントクライアントを使う場合は必ず必要です。 basicliteは日本語メッセージの定義が含まれていないため日本語メッセージを表示したい場合はbasicを使用します。 oracleに接続するアプリケーションからの使用であればこのファイルだけで動作します。
・instantclient-jdbc-win32-11.2.0.1.0.zip
jdbcドライバの補助セットです。JAVAのプログラムでORACLE JDBCのXA機能等を使用する場合に必要です。
・instantclient-sqlplus-win32-11.2.0.1.0.zip
sqlplusを使用するためのセットです。
・instantclient-sdk-win32-11.2.0.1.0.zip
OCIやOCCI等の開発で使用するヘッダ、ライブラリ、サンプルのセットです。
・instantclient-odbc-win32-11.2.0.1.0.zip
odbcを使用するためのセットです。
・instantclient-tools-win32-11.2.0.1.0.zip
RAT(Real Application Testing)というテスト機能で必要なセットです。
・Instant Client Package - Precompiler:
pro*C等のプリコンパイラ製品に必要なセットへのリンクです。
本ページではinstantclient-basic-win32-11.2.0.1.0.zipとinstantclient-sqlplus-win32-11.2.0.1.0.zipを使用して確認します。
設定手順
インスタンスクライアントを使用するには以下の手順を実施すれば使用できます。1 ダウンロードしたファイルをすべて同じディレクトリに解凍する
2 インスタントクライアントのライブラリをロードできるようにする
ライブラリをロードする仕組みはOSによって異なるので注意が必要です。
- JAVAからJDBC Thinドライバを使用する場合(全てのOS共通)
圧縮ファイル内に含まれるJDBCドライバ(11gではodjbc5.jarまたはodjbc6.jar)をアプリケーションのCLASSPATHに設定します。 Type4(Thin)で接続する場合はその他のファイルは無くても問題ありません。JDBCについての詳細は「JDBCとは」に記載があります。
- WindowsでOCIライブラリを使用する場合(※)
Windowsではカレントディレクトリか環境変数PATHにあるディレクトリのライブラリ(dll)がロードされます。 したがってインスタントクライアントを使用するアプリケーションのカレントディレクトリにdllを解凍しておくか、 環境変数PATHの値にインスタントクライアントのdllがあるディレクトリパスを先頭に追加することでライブラリがロードできるようになります。
注意
Windows環境でPATHシステム環境変数を変更すると既にインストール済みのORACLEに影響が出る可能性があります。 これはPATHを変更することでライブラリを検索する順番が変更され既存のORACLEが読み込んでいたライブラリが変わるためです。
既にORACLEがインストールされている環境ではシステム環境変数PATHを変更するのではなく、バッチファイル内でPATHを変更した後でプログラムを呼び出す等、影響を局所的にする対応をお勧めします。 例えば、インスタントクライアントでsqlplusを使う場合は以下のバッチファイルをsqlplusと同じディレクトリに作成すればsqlplusのカレントディレクトリがバッチファイルのディレクトリになるため影響なくsqlplusを使うことができます。
@echo off cd /d %~dp0 set NLS_LANG=japanese_japan.JA16SJIS sqlplus.exestart_sqlplus.bat
ライブラリがロードできなかった場合は以下のようなエラーが発生します。
--------------------------- sqlplus.exe - システム エラー --------------------------- コンピューターに OCI.dll がないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてみてください。 --------------------------- OK ---------------------------
- LinuxやUNIXでOCIライブラリを使用する場合(※)
これらのOSでは環境変数LD_LIBRARY_PATHやLIBPATH等で設定されているパスにあるライブラリを読み込まむためインスタントクライアントを使用するユーザの環境変数を変更します。 OSごとにどのライブラリを使用するかはUNIX系OSでのコンパイル方法で記載しています。
Linuxでの例)
[ora112@linux1 instantclient_11_2]$ export LD_LIBRARY_PATH=/home/ora102/instantclient_11_2:$LD_LIBRARY_PATH [ora112@linux1 instantclient_11_2]$ export PATH=/home/ora102/instantclient_11_2:$PATH [ora112@linux1 instantclient_11_2]$ sqlplus SQL*Plus: Release 11.2.0.1.0 Production on 金 4月 15 17:52:29 2011 Copyright (c) 1982, 2009, Oracle. All rights reserved. ユーザー名を入力してください:ライブラリがロードできない場合は以下のようなエラーが発生します。
[ora102@linux1 instantclient_11_2]$ ./sqlplus ./sqlplus: error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory※・・・JDBCのThin接続以外はすべてOCIライブラリを必要とします
接続方法
tnsnames.oraの設定は不要で簡易ネーミングメソッドという機能により以下の書式で接続することができます。簡易ネーミングメソッドについてはクライアントからの接続設定(2)に記載があります。
<host名>:<リスナーのポート番号>/<サービス名>
sqlplusでの接続例
SQL*Plus: Release 11.2.0.1.0 Production on 金 4月 15 18:04:58 2011 Copyright (c) 1982, 2010, Oracle. All rights reserved. ユーザー名を入力してください: test/test@192.168.1.2:1521/orcl102 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options に接続されました。 SQL>
補足1 表示メッセージを日本語にする
環境変数NLS_LANGにJapanese_japan.<クライアントが表示可能な文字コードのキャラクタセット>を設定します。- Windowsの場合
C:\> set NLS_LANG=Japanese_japan.JA16SJISTILDE- UNIX系の場合
bash等の場合 $ export NLS_LANG=Japanese_japan.UTF8 csh等の場合 $ setenv NLS_LANG Japanese_japan.UTF8
補足2 tnsnames.oraを使用できるようにする
tnsnames.oraが置いてあるパスを環境変数TNS_ADMINに設定します。- Windowsの場合
C:\> set TNS_ADMIN=C:\- UNIX系の場合
bash等の場合 $ export TNS_ADMIN=/var/tmp/ csh等の場合 $ setenv TNS_ADMIN /var/tmp/