71

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

Oracle クライアント ツールのインストール フットプリントは 200Mb を超え、非常に長い時間がかかりました。

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

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

4

8 に答える 8

71

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

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

  • フレームワークに付属しているOracle用のMicrosoftプロバイダー(System.Data.OracleClient)を使用します。
  • Oracle Instant Client Package -Basic Liteをダウンロードします。これは、(ほぼ)最小限のzipファイルです。バージョン11.1.0.6.0よりもはるかに小さいバージョン10.2.0.4をお勧めします。
  • 次のファイルを特定のフォルダーに解凍します。
    • v10:
      • oci.dll
      • orannzsbb10.dll
      • oraociicus10.dll
    • v11:
      • oci.dll
      • orannzsbb11.dll
      • oraociei11.dll
  • x86プラットフォームでは、Visual Studio2003用のCRTDLL(msvcr71.dll)をこのフォルダーに追加します。これは、Oracleの担当者がこれを読むのを忘れたためです...
  • このフォルダーをPATH環境変数に追加します。
  • アプリケーションでEasyConnectNamingメソッドを使用して、悪名高い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で動作するとされる最初のバージョン)。
  • インスタントクライアント11.1.0.6.0、明らかに。

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

于 2008-09-16T10:06:11.513 に答える
15

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

  1. oracle.com(53 MB)から「ODAC11.2 Release 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;し、コードに追加すると、などのタイプを使用して、OracleデータベースにアクセスできるようOracleConnectionOracleCommandなります。OracleDataReader詳細については、クラスのドキュメントを参照してください。tnsnames.ora構成ファイルを使用する必要はありません。接続文字列のみを正しく設定する必要があります。
  4. 上記の4つのDLLは、実行可能ファイルと一緒にデプロイする必要があります。
于 2011-07-07T10:07:38.723 に答える
15

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

以前の(古い)回答が示唆した非管理バージョンとのコード使用法の比較は次のとおりです

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

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

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

すべてを合わせると、 .Net 4.0 でなんと6.4 MB になります。

于 2014-10-20T15:51:32.623 に答える
14

この方法により、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 と同じフォルダーに配置してください。

于 2009-09-11T05:12:29.170 に答える
8

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

于 2008-09-16T09:34:16.303 に答える
5

これはOracle 11.2.0.4.0の更新です。を使用して、 Windows 7で次の手順で成功しましたSystem.Data.OracleClient

1. Instant Client Package - Basic Lite : Windows 32 ビットまたは64ビットをダウンロードします。

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

32ビット

 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

3. 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 が必要です」というエラーが発生した場合は、この質問を参照してください。

于 2014-04-18T20:34:48.940 に答える
3

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

于 2008-09-16T09:27:23.230 に答える
2

Oracleフォーラムのこの投稿も非常に有用であることがわかりました。

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

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

再生:

次の環境変数をセットアップします。

  1. 他の oracle ディレクトリが PATH に含まれていないことを確認してください
  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 のよくある質問はこちら

于 2009-10-07T03:11:54.270 に答える