縄神様が困っておられたので私の拙い知識がちょっとでも役に立てばと思い久々にブログを書きます。
InstantClientの配布パッケージとかないもんかな
— Ahf(Tomoyuki Obi) (@twit_ahf) 2014年10月22日
こちらのつぶやきではInstantClientをご所望されてますが、実際は.NETアプリのインストールパッケージを探しておられたのでこのエントリではODP.NETのインストール方法について記載します。
前提
このエントリの内容はOracle 11g(11.2)〜12c(12.1)あたりを対象にしています。
記載している手順の詳細についてはマニュアルで確認してください。
ODP.NET Managed Driverを使う
多分これが一番早いと思います。
ODP.NET Managed DriverはOracle 12cになって登場したフルマネージドのODP.NETドライバです。
Oracleの文書では管理対象ドライバとかいう訳のわからない翻訳がされたりもしています。
こちらについての詳細や使い方は、こちらやかるあさんのブログ、こちらのチュートリアルを参考にすると良いと思います。
※(2014/11/02追記) ODP.NET Managed Driverに関する私的まとめを書きました。よろしければ ODP.NET Managed Driver(管理対象ドライバ)についての私的まとめ - しばたテックブログ もご覧ください。
以下の条件を満たせる場合はこれを利用する事をお勧めします。
- .NET 4以降のアプリケーションである。
- ODP.NETの名前空間を
Oracle.ManagedDataAccess.*
に変更できる。
インストール方法
ダウンロードサイト(32bit、64bit)よりManaged Driverをダウンロードします。
ダウンロードしたZipファイルを任意のディレクトリに展開し、.¥odp.net¥managed¥x64"または".¥odp.net¥managed¥x86
フォルダにあるconfigure.batを実行するればインストール完了になります。
展開したディレクトリがそのままODP.NETのインストール先になります。
このconfigure.batではOraProvCfgによるOracle.ManagedDataAccess.dllのGACへの登録や、パフォーマンスカウンタの追加、イベントログの設定、Visual Studio連携のための設定などを行っています。
configure.batを叩かなくても作成したアプリケーションにOracle.ManagedDataAccess.dllを同梱するだけで最低限動作させることはできる様です。
---- 2015/05/09追記
今年の1月にOracle公式のNugetパッケージが公開されていました。
Visual Studioのパッケージマネージャーコンソールから以下のコマンドを入力することでVisual StudioのプロジェクトにOracle.ManagedDataAccess.dll
を追加することができます。
PM> Install-Package Oracle.ManagedDataAccess
追記ここまで ----
インストール後の設定
インストール後はネットワーク設定をする必要がありますが、EZCONNECT接続を使うのであれば接続文字列を設定するだけなのでこれ以上の設定は不要になります。 TNS接続を使う場合、Managed Driverではapp.configにTNSのエントリやTNS_ADMINのパスを指定することができ、アプリケーションの配置以外の設定は不要になります。 app.configを使わずにTNS_ADMIN環境変数を指定しtnsnames.oraファイルを使用することも可能です。
Xcopy版ODACを使う
Managed Driverが使えない場合は通常のXcopy版のODACをインストールするのが手っ取り早いです。
インストール方法
ダウンロードサイト(32bit、64bit)よりXcopy版のODACをダウンロードします。
ダウンロードしたZipファイルを任意のディレクトリに展開し、展開したフォルダの中にあるinstall.batを実行するとインストールできます。ちなみに要管理者権限です。
このinstall.batは以下の4つの引数をとります。
install.bat [インストールするコンポーネント] [ORACLE_HOMEのパス] [ORACLE_HOME名] [依存コンポーネントをインストールするか否か]
インストール可能なコンポーネントは以下。
- asp.net2 : ASP.NET Providers 2 (.NET 2.0-3.5) ※ODP.NET 2,Instant Clientを含みます。
- asp.net4 : ASP.NET Providers 4 (.NET 4-) ※ODP.NET 4,Instant Clientを含みます。
- odp.net2 : ODP.NET 2 (.NET 2.0-3.5) ※Instant Clientを含みます。
- odp.net4 : ODP.NET 4 (.NET 4-) ※Instant Clientを含みます。
- oledb : OraOLEDB ※Instant Clientを含みます。
- oramts : ORAMTS ※Instant Clientを含みます。
- all : すべてのコンポーネントをインストール
実行例
install.bat odp.net2 "C:\oracle\product\12.1.0\client_1" OraClient12Home1 true
またinstall.batの実行中に同じディレクトリにあるconfigure.batを呼び出しており、カレントディレクトリがinstall.batのあるディレクトリでないとインストールエラーとなるので注意してください。
インストール後の設定
インストールが完了するとinstall.batで指定したORACLE_HOME配下にODACのモジュールが展開され、ORACLE_HOMEのレジストリキーが追加されます。
レジストリキーは¥¥HKLM¥Software¥Oracle¥KEY_{ORACLE_HOME名}
(WOW64の場合は¥¥HKLM¥Software¥Wow6432Node¥Oracle¥KEY_{ORACLE_HOME名}
)になります。
XCopy版のODACではNLS_LANGの値がAMERICAN_AMERICA.WE8MSWIN1252
固定なので必要に応じて変更する必要があります。
また、環境変数は変更されないので必要に応じてORACLE_HOMEへのPATHを通すなどしてください。
ネットワーク設定については、EZCONNECT接続を使うのであればManaged Driver同様これ以上の設定は不要になります。 TNS接続を使う場合はTNS_ADMINにtnsnames.oraファイル配置をするなどの作業が必要になります。
アンインストールについて
XCopy版のODACはアンインストール方法に癖があるのでここで補足しておきます。
アンインストールはZipを展開したフォルダの中にあるuninstall.batを以下の引数で実行することで行えます。
uninstall.bat [削除するコンポーネント] [ORACLE_HOMEのパス または ORACLE_HOME名]
実行例
uninstall.bat all "C:\oracle\product\12.1.0\client_1" or uninstall.bat all OraClient12Home1
ただし、カレントディレクトリがORACLE_HOMEにないとアンインストールに失敗するので注意が必要です。
さらにこのバッチを実行してもインストールしたファイルやレジストリは完全には消えないので、完全な削除をしたい場合は自前でファイルとレジストリを削除する必要があります。
手っ取り早くインストールするには
正直なところ、どちらの方法をとってもインストーラーを叩いて一発でドーンと完了という訳にはいきません。
なのでインストール作業を省力化するにはバッチファイルやPowerShellなどで独自のインストーラーを作る必要があります。
私はPowerShellでインストーラーを作っていますが一度インストーラーを作ると以降は流用が出来るのでお勧めです。
[2014/01/24追記]
PowerShellで作ったインストーラーの例を以下のエントリで挙げています。
新・門外不出のOracle現場ワザ エキスパートが明かす運用・管理の極意 (DB Selection)
- 作者: 小田圭二,大塚信男,五十嵐建平,谷敦雄,宮崎博之,神田達成,村方仁
- 出版社/メーカー: 翔泳社
- 発売日: 2012/08/17
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 5回
- この商品を含むブログ (1件) を見る