Oracleクライアントのインストールって手間ですよね。
クライアントをインストールするってことは、サーバーがあるわけで、クライアントが複数台あるとしたら導入作業にコストがかかります。
Javaの場合は、SQL Developerのようにjdbcを使用すればクライアントのインストールは不要です。
では.Netではどうでしょう。今あるクライアントレスでの接続方法をまとめておきます。
1つ目はSystem.Data.OracleClientを使う方法。
.Net Framework4からは非推奨となり、将来のバージョンでは削除される予定との内容が公式で出ている以上、遊び以外での使用は控えたほうが良いでしょう。
2つ目はdotConnect for Oracleという有償ツール。
僕は使用したことがありませんが、ADO経由で直接Oracleのサーバーに接続できるようです。
参考:dotConnect for Oracle:日本語ページ
3つ目はOracle.ManagedDataAccessを使う方法。
ODPといえば、クライアントをインストールして使う「Oracle.DataAccess」が従来はメジャーでしたが、Oracle12cでインストール不要で使える「Oracle.ManagedDataAccess」がリリースされました。
旧Oracleでは使えないかというとそうではなく、サーバーが10g Release2から使用できるようです。
参考:Oracle公式:.NETへの快適なドライブ
使用法も簡単で、NuGetギャラリーから簡単にインストールできます。
Oracle.DataAccessの上位版か?と聞かれるそうでもなく、Oracle.DataAccessでサポートされていたクラスやメソッドが、Oracle.ManagedDataAccessではサポートされていないものも多いです。個人的によく使っていたOracleBulkCopyもサポート外になりました。
参考:Oracle公式:ODP.NET管理対象ドライバと管理対象外ドライバの相違点
接続文字列は、下記のように記述します。
User Id={ユーザー名}; Password={パスワード}; Data Source=(DESCRIPTION =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = {サービス名})))
Oracleクライアントインストール時は、tnsnames.oraにData Sourceを記述するので、そのデータソース名だけでも接続できますが、Oracle.ManagedDataAccessを使う場合は、Data Sourceを接続文字列に指定しなければなりません。
RESTなりSOAPなりのWeb経由でデータを取得する方法。
良い方法ではありますが、サーバー側・クライアント側両方に処理を作る必要があるため、コストはかかります。
個人的には、DBの読み書きだけの目的では使うことはないかなと思います。
以上、Oracleのクライアントレスで接続する方法まとめでした。