INDEX
Oracle Instant Client
Instant Client は、Oracle 社が無償で提供してる Oracle Database 接続用クライアントソフトウェアです。標準の Oracle Client のインストールや ORACLE_HOME の作成を行わずに、アプリケーション(OCI、OCCI、Pro*C、ODBC、JDBC 経由も)を利用することが出来る。本番用途にも利用が出来て、使用されるディスク容量も削減出来る。
- Oracle Database Instant Client
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)。
- 32-bit Oracle Data Access Components (ODAC) with Oracle Developer Tools for Visual Studio
- 32-bit Oracle Data Access Components (ODAC)
- 64-bit Oracle Data Access Components (ODAC)
インストール
ダウンロードした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 は以下の場所が参照される。
- 環境変数 TNS_ADMIN に設定されてるディレクトリ
- 環境変数 ORACLE_HOME に設定されているディレクトリ下の \NETWORK\ADMIN
- カレントディレクトリ(作業ディレクトリ)
### 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へ。