web-dev-qa-db-ja.com

C#をOracleデータベースに接続するために必要な最小クライアントフットプリントはどれくらいですか?

クライアント管理ツールとVisual Studio 2008をラップトップにダウンロードしてインストールすることにより、C#(Visual Studio 2008)からOracleデータベース(10g)に正常に接続しました。

Oracle Clientツールのインストールフットプリントは200Mbを超え、非常に長くかかりました。

最小実行可能フットプリントが何であるかを誰もが知っていますか?単一のDLLとregisterコマンドであることを望んでいますが、Oracleホームをインストールし、さまざまな環境変数を設定する必要があると感じています。

コードでOracle.DataAccessを使用しています。

71
Jonathan

Oracleデータベースに接続するには、Oracleクライアントが必要です。最も簡単な方法は、 Oracle Data Access Components をインストールすることです。

フットプリントを最小限に抑えるには、次のことをお勧めします。

  • フレームワークに同梱されているOracle用のMicrosoftプロバイダー(System.Data.OracleClient)を使用します。
  • Oracle Instant Client Package -Basic Liteをダウンロードします。これは、(ほぼ)最低限のZipファイルです。バージョン10.1.0.6.0よりもはるかに小さいバージョン10.2.0.4をお勧めします。
  • 特定のフォルダーで次のファイルを解凍します:
    • v10:
      • oci.dll
      • orannzsbb10.dll
      • oraociicus10.dll
    • v11:
      • oci.dll
      • orannzsbb11.dll
      • oraociei11.dll
  • X86プラットフォームでは、Visual Studio 2003(msvcr71.dll)のCRT DLL)をこのフォルダーに追加します。Oracleが read this ...を忘れたためです。
  • このフォルダーをPATH環境変数に追加します。
  • アプリケーションで Easy Connect Naming メソッドを使用して、悪名高いTNSNAMES.ORA構成ファイルを削除します。このように見えます:sales-server:1521/sales.us.acme.com

これは約19Mb(v10)です。

複数のアプリケーション間でこのフォルダーを共有する必要がない場合は、上記のDLLをアプリケーションバイナリと共に出荷し、PATH設定手順をスキップすることもできます。

Oracleプロバイダー(Oracle.DataAccess)を絶対に使用する必要がある場合は、次のものが必要です。

  • ODP .NET 11.1.0.6.20(Instant Clientで動作するとされる最初のバージョン)。
  • Instant Client 11.1.0.6.0、明らかに。

この最新の構成はテストしていないことに注意してください...

69
Mac

2014年現在、OPD.NETマネージドドライバーは最小のフットプリントです。

以下は、以前の(時代遅れの)回答が示唆した非管理バージョンとのコード使用比較です: http://docs.Oracle.com/cd/E51173_01/win.122/e17732/intro005.htm#ODPNT148

これらのdllをダウンロードして、プロジェクトのOracle.ManagedDataAccess.dllを参照する必要があります。 ODP.NET、マネージドドライバーXcopyバージョンのみ

以下は、リリースと一緒にパッケージ化する必要がある典型的なフットプリントです。

  1. Oracle.ManagedDataAccess.dll
  2. Oracle.ManagedDataAccessDTC.dll

すべて一緒に、whopping.Net 4.0の場合は6.4 MB。

16
ecoe

ODAC 11.2.0.2.1を使用して、Windows XP上で上記のPandicusによって提案された方法を使用します。手順は次のとおりです。

  1. Oracle.com(53 MB)から「ODAC 11.2リリース3(11.2.0.2.1)with Xcopy Deployment」パッケージをダウンロードし、Zipを抽出します。
  2. 次のDLLを収集します:oci.dll(1 MB)、oraociei11.dll(130 MB!)、OraOps11w.dll(0.4 MB)、Oracle.DataAccess.dll(1 MB)。残りのものは削除でき、何もインストールする必要はありません。
  3. Oracle.DataAccess.dllへの参照を追加し、コードにusing Oracle.DataAccess.Client;を追加すると、OracleConnectionOracleCommandOracleDataReaderなどの型を使用してOracleにアクセスできるようになります。データベース。詳細については class documentation をご覧ください。 tnsnames.ora構成ファイルを使用する必要はありません。 接続文字列 のみを適切に設定する必要があります。
  4. 上記の4つのDLLは、実行可能ファイルとともに展開する必要があります。
15
kol

この方法により、Oracleの5つの再配布可能ファイルを使用してODP.netに接続できます。

Chrisのブログエントリ:新しいODP.Netを使用して、簡単な展開でC#からOracleにアクセスする

編集:ブログがすべてダウンした場合の簡単な要約を以下に示します...

  • oci.dll
  • Oracle.DataAccess.dll
  • oraociicus11.dll
  • OraOps11w.dll
  • orannzsbb11.dll
  • oraocci11.dll
  • ociw32.dll

バージョン番号の競合を避けるために、同じODP.Net/ODACディストリビューションからこれらのDLLをすべて取得し、それらをすべてEXEと同じフォルダーに入れてください。

14
Fidel

DevArt http://www.devart.com/ 、以前のCoreLab(crlab.com)は、純粋なC#Oracleクライアントを提供します。これは単一のdllであり、正常に機能します。

8
Thomas Boesen

Oracle 11.2.0.4.の更新を以下に示します。 Windows 7System.Data.OracleClientを使用して、次の手順で成功しました。

1。ダウンロードインスタントクライアントパッケージ-Basic LiteWindows 32-Bit または 64-Bit

2。次のファイルをシステムパス内の場所にコピーします。

2ビット

 1,036,288  2013-10-11  oci.dll
   348,160  2013-10-11  ociw32.dll
 1,290,240  2013-09-21  orannzsbb11.dll
   562,688  2013-10-11  oraocci11.dll
36,286,464  2013-10-11  oraociicus11.dll

64ビット

   691,712  2013-10-09  oci.dll
   482,304  2013-10-09  ociw32.dll
 1,603,072  2013-09-10  orannzsbb11.dll
 1,235,456  2013-10-09  oraocci11.dll
45,935,104  2013-10-09  oraociicus11.dll

tnsnames.ora の必要性を省く接続文字列を構築します。

(以下のテストプログラムの例を参照してください。)

4。この最小限のC#プログラムを実行して、インストールをテストします。

using System;
using System.Data;
using System.Data.OracleClient;

class TestOracleInstantClient
{
    static public void Main(string[] args)
    {
        const string Host = "yourhost.yourdomain.com";
        const string serviceName = "yourservice.yourdomain.com";
        const string userId = "foo";
        const string password = "bar";

        var conn = new OracleConnection();

        // Construct a connection string using Method 1 or 2.
        conn.ConnectionString =
            GetConnectionStringMethod1(Host, serviceName, userId, password);

        try
        {
            conn.Open();
            Console.WriteLine("Connection succeeded.");
            // Do something with the connection.
            conn.Close();
        }
        catch (Exception e)
        {
            Console.WriteLine("Connection failed: " + e.Message);
        }
    }

    static private string GetConnectionStringMethod1(
        string Host,
        string serviceName,
        string userId,
        string password
        )
    {
        string format =
            "SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" +
            "(Host={0})(PORT=1521))" +
            "(CONNECT_DATA=(SERVER=DEDICATED)" +
            "(SERVICE_NAME={1})));" +
            "uid={2};" +
            "pwd={3};"; // assumes port is 1521 (the default)

        return String.Format(format, Host, serviceName, userId, password);
    }

    static private string GetConnectionStringMethod2(
        string Host,
        string serviceName,
        string userId,
        string password
        )
    {
        string format =
            "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" +
            "(Host={0})(PORT=1521))" +
            "(CONNECT_DATA=(SERVER=DEDICATED)" +
            "(SERVICE_NAME={1})));" +
            "User Id={2};" +
            "Password={3};"; // assumes port is 1521 (the default)

        return String.Format(format, Host, serviceName, userId, password);
    }
}

最終ヒント:エラーが発生した場合、「System.Data.OracleClientにはOracleクライアントソフトウェアバージョン8.1.7が必要です」この質問

5
DavidRR

ODAC xcopyを使用すると、約45MBを節約できます。 http://www.Oracle.com/technology/software/tech/windows/odpnet/index.html

3
smo

Oracleフォーラムのこの投稿も非常に便利だと感じました。

Visual StudioでOracle Instant Clientをセットアップする方法

注:ADO.NETチームはSystem.Data.OracleClientを非推奨にしているため、将来のプロジェクトではODP.NETを使用する必要があります

再生:

次の環境変数を設定します。

  1. pATHに他のOracleディレクトリがないことを確認してください
  2. インスタントクライアントを指すように[〜#〜] path [〜#〜]を設定します
  3. TNS_ADMINがtnsnames.oraファイルのある場所を指すように設定します
  4. NLS_LANGを設定します
  5. Oracle_HOMEをインスタントクライアントに設定します

私にとっては、NLS_LANGを

http://download-east.Oracle.com/docs/html/A95493_01/gblsupp.htm#634282

インスタントクライアントにsqlplusアドオンを使用して、これが正しいクライアントソフトウェアを使用していることを確認しました。

私の場合、SET NLS_LANG = AMERICAN_AMERICA.WE8MSWIN1252を設定します

注:変更を行う前に、Oracleレジストリキー(存在する場合)をバックアップし、環境変数の文字列をバックアップします。

Oracle Instant Clientを読むFAQこちら

2
Vincent De Smet