トップ 差分 一覧 カテゴリ ソース 検索 ヘルプ RSS ログイン

Oracle/InstantClient

INDEX

Oracle Instant Client

Instant Client は、Oracle 社が無償で提供してる Oracle Database 接続用クライアントソフトウェアです。標準の Oracle Client のインストールや ORACLE_HOME の作成を行わずに、アプリケーション(OCI、OCCI、Pro*C、ODBC、JDBC 経由も)を利用することが出来る。本番用途にも利用が出来て、使用されるディスク容量も削減出来る。

Instant Client のインストール

 ダウンロード

ダウンロードページに行き、必要とするプラットフォームを選択して、ライセンスに同意の上、必要なバージョンの各ファイルをダウンロードする。ダウンロードする際にはOTNのシングルサインオンを求められるので、既にユーザ登録をしている場合はログインし、まだ登録をしていない場合は登録を行う必要がある。

パッケージ 説明
Basic OCI、OCCI、JDBC-OCI アプリケーションの実行に必要なすべてのファイル
Basic Lite Basicパッケージの下位バージョンで、英語のエラー・メッセージと、Unicode、ASCII、西ヨーロッパのキャラクタ・セットのみがサポート
SQL*Plus Instant Client で SQL*Plus を実行するための追加ライブラリと実行可能ファイル
JDBC Supplement JDBCにおけるXA、国際化、および行セットの操作に対応するための追加サポート
ODBC Supplement ODBCアプリケーションでInstant Clientを使用できるようにするための追加ライブラリ
SDK Instant Client 向けOracleアプリケーションの開発に使用する追加のヘッダー・ファイルとサンプルのmakefile
ODAC Oracle Instant Client に加えて、Oracle Data Provider for .NET、Oracle Services for MTS、Oracle Providers for ASP.NET、Oracle Provider for OLE DB、OO4O が含まれる

Basic (または Basic Lite )は必須。JDBC, ODBC および SQL*Plus は必要に応じて。

Oracle Data Access Components (ODAC) は、Instant Client と ODP.NET などが含まれる。ダウンロードは以下の場所からできる(要OTN登録)。また、Oracle Universal Installer 版と XCopy 版がある(32bitはODT付きはインストーラ、単体はXCopy)。

 インストール

ダウンロードしたZIPファイルを任意の場所に展開する。「instantclient_11_2」と言ったディレクトにの中にあるので必要に応じて名前は変える。

※以下、展開先を「C:\WinApp」とし、「instantclient_11_2」を「OracleInstantClient11gR2」に変更。つまり、「C:\WinApp\OracleInstantClient11gR2」に「oraocci11.dll」がある状態。

 環境変数の設定

ライブラリ・ローディング・パスに展開したディレクトリを通す。UNIXの場合は LD_LIBRARY_PATH 、Windowsの場合は PATH にそれぞれ追加する。

 言語と地域の設定

Oracle の言語と地域を環境変数 NLS_LANG で設定出来る。

日本語関係だと以下のいずれかになると思う。

SET NLS_LANG=JAPANESE_JAPAN.AL32UTF8
SET NLS_LANG=JAPANESE_JAPAN.JA16SJIS
SET NLS_LANG=JAPANESE_JAPAN.JA16SJISTILDE
SET NLS_LANG=JAPANESE_JAPAN.JA16EUC

 tnsnames.ora の設定

Oracle が透過的にデータベースに接続するためのネットサービス名を定義するファイル。

tnsnames.ora の基本的な記述は以下のようになる。

net_service_name=
 (DESCRIPTION=
   (ADDRESS=protocol_address_information)
   (CONNECT_DATA=(SERVICE_NAME=service_name))
 )

net_service_name は定義するネットサービス名。protocol_address_information は接続するデータベースサーバのアドレス等を指定します。TCP/IPの場合の書式は「(PROTOCOL=tcp)(HOST=server-name)(PORT=1521)」で、PROTOCOLはtcp固定(SSLはtcps)、HOSTは接続するサーバ名かIPアドレス、PORTはポート番号で標準は1521です。service_name は接続するデータベースのサービスを識別する名前。

tnsnames.ora は以下の場所が参照される。

  1. 環境変数 TNS_ADMIN に設定されてるディレクトリ
  2. 環境変数 ORACLE_HOME に設定されているディレクトリ下の \NETWORK\ADMIN
  3. カレントディレクトリ(作業ディレクトリ)
### tnsnames.ora sample ###
#<net_service_name>=
# (DESCRIPTION=
#  (ADDRESS=(PROTOCOL=tcp)(HOST=<host_name_or_ip_address>)(PORT=1521))
#  (CONNECT_DATA=(SERVICE_NAME=<service_name>))
# )

Instant Client を使う

 SQL*Plus を使う

コマンドライン版の SQL*Plus を利用して接続確認をする。

コマンドプロンプトを開き、カレントディレクトリをインストールした場所に移動し、「sqlplus」とコマンドを実行する。起動するとユーザ名を求めてくるので適に入力する。

起動引数でログイン情報を指定すればそのまま接続する。TNSを設定していれば「ユーザ名/パスワード@ネットサービス名」で接続できる。また、簡易接続ネーミング(EZCONNECT)が有効であれば(デフォルトで有効)、「ユーザ名/パスワード@ホスト名:ポート番号/サービス名」でも接続できる。

 ODBCドライバのインストール

コマンドプロンプトを開き、カレントディレクトリをインストールした場所に移動し、以下のように「odbc_install JA」とコマンドを実行する。"JA"を付けずに実行するとデフォルトの英語版のDLLがインストールされる。

>odbc_install JA
Oracle ODBC Driver is installed successfully.

「Oracle ODBC Driver is installed successfully.」と表示されれば完了。DLLがインストールされ、ODBC のドライバー一覧に「Oracle in instantclient_11_2」が追加される。

ドライバのインストールが完了すれば、あとは普通にODBCとして利用出来る。「Error Cannot Load Resource File sqresus.dll」と言ったエラーがでる場合はパスが通っていない。

 Oracle Data Provider for .NET (ODP.NET) のインストール

.Net 4 以降で、12c から提供される ODP.NET Managed Driver(管理対象ドライバ)を利用出来る場合は、その方が楽かもしれない…。

※多分(未確認)

Universal Installer 版は、適当な場所にファイルを展開し、setup.exe を実行する。XCopy 版は、適当な場所にファイルを展開し、install.bat を実行する。

インストールしなくても、アプリと同じディレクトリに Oracle.DataAccess.dll (XCopy版の odp.net20/odp.net/bin/2.x か odp.net4/odp.net/bin/4 下のにある)と Instant Client のバイナリがあり、app.config の DbProviderFactories に設定があれば動く。インストールしない場合は、以下のファイル(例は 11g)をアプリケーションと同じ場所に置き、machine.config に記述される内容を app.config に記述する必要がある(最低限 DbProviderFactories セクション)。

  • Oracle.DataAccess.dll
  • OraOps11w.dll
  • oci.dll
  • orannzsbb11.dll
  • oraociei11.dll
<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  </configSections>
  <system.data>
    <DbProviderFactories>
      <add name="Oracle Data Provider for .NET"
           invariant="Oracle.DataAccess.Client"
           description="Oracle Data Provider for .NET"
           type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, 
Version=2.112.2.0, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>
  <oracle.dataaccess.client>
    <settings>
      <add name="DemandOraclePermission" value="1" />
      <add name="DllPath" value="C:\WinApp\OracleInstantClient11gR2" />
    </settings>
  </oracle.dataaccess.client>
</configuration>

oracle.dataaccess.client 内の記述については、Oracle Data Provider for .NETの構成 を参照。

接続文字列のデータソースは、tnsnames.ora を使用するばあいは、TNS名を指定する。使用しない場合、EZCONNECTの形式「<host_name_or_ip_address>:<port_no>/<service_name>」、または、TNSの定義の記述形式「(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<host_name_or_ip_address>)(PORT=<port_no>))(CONNECT_DATA=(SERVICE_NAME=<service_name>)))」で指定出来る。

最終更新時間:2018年06月04日 00時29分00秒 指摘や意見などあればSandBoxのBBSへ。