6

数か月前、私の同僚はXCOPYを使用してサーバーにODAC 11.106.21をインストールし、その後、このクライアントを問題なく使用する多くのアプリケーションを開発しました(テストおよび実稼働Windowsサーバーで)。

先週、ODAC11.1.07.20でアプリケーションを開発しました。XCOPYを使用してこれらの新しいODACバージョンを別のフォルダーにインストールしてから、アプリケーションをテストサーバーに含めるように依頼したところ、アプリケーションで問題が発生する可能性があるため、ODAC11.106.21を使用する必要があると答えました。

だから私は知りたいです:

1)1台のサーバーに2つの異なるODACバージョンを含めることが本当に可能かどうか。

2)答えが肯定的である場合、同僚がアプリケーションに問題を起こさないことをどのようにしっかりと保証できますか?

3)答えが肯定的である場合、これはサーバーで何らかの構成を行うために必要ですか?

ありがとう!!

4

2 に答える 2

10

同じマシン上に複数のバージョンのODACを配置できますが、各アプリケーションで使用されるバージョンに関して注意すべき点がいくつかあります。これは実際にはすべてのアセンブリに適用されます。

  • Visual Studioで、Oracle.DataAccess.dllで特定のバージョン= Trueを設定すると、そのアプリケーションは他のバージョンを使用せず、ビルド対象のバージョンを見つけることができる必要があります。
  • DLLをアプリケーションと一緒にデプロイするか、特定の場所またはGACに配置することを期待するかどうか。
  • 依存するDLLを見つけるための特定の検索順序があり、それは非常に複雑なので、このMSDNトピックをお読みください。

簡単に言うと、アプリケーションが目的のOracle.DataAccess.dllの正確なバージョンを使用していることを確認する簡単な方法が2つあります(これは、他のすべてがデフォルトであるほとんどの場合に当てはまります)。

  1. 特定のバージョンをTrueに設定します。
  2. DLLをアプリケーションとともにデプロイし、アプリケーションディレクトリに配置するか、DLLがGACにあることを確認します。

特定のケースでは、同僚が有効な懸念を抱いている可能性があります。現在インストールされているアプリケーションがGACからOracle.DataAccess.dllを取得していて、特定のバージョンをTrueに設定していない場合、新しいODACをインストールすると、彼のアプリケーションはそれを使い始めます(新しいOracle.DataAccess.dllもGACにインストールされると思います)、

于 2010-03-24T20:17:20.087 に答える
4

ここでの問題は、.NET dllではなく、アンマネージdllです。

1台のサーバーで2つのASP.NETアプリケーションを動作させようとしています。1つはODP.NET9.xを使用して古いもので、新しいものは最新のODP.NETを使用しています。xcopyを使用して最新のODP.NETをデプロイし、新しいODPのPATH環境変数へのパスを追加しました。現在、古いアプリケーションは機能しません(おそらく、新しいdllを使用しようとします)。PATH変数からパスを削除すると、新しいアプリが機能しなくなります。OracleページのIISの下で1台のサーバーで動作させる方法を見つけましたが、動作しませんでした。おそらく、最新のODP.NETをインストールしなかったが、それをxcopiしたためです。私はそれを試してみる必要があります。

オラクルの説明:リンク:http ://www.oracle.com/technology/tech/windows/odpnet/faq.html 多くのOracleアプリケーションは、Microsoftインターネットインフォメーションサービス(IIS)で実行されます。以前は、IISは単一のプロセスアプリケーションであり、同じIISインスタンスを使用して実行中の各Webアプリケーションに異なるシステムパスを割り当てることはできませんでした。Windows Server2003上のIIS6では、IISは同じインスタンスに対して複数のプロセスをサポートします。各アプリケーションには独自のIISプロセスがあるため、各Webアプリケーションには、独自のOracleホームを持つ異なるシステムパスディレクトリを割り当てることができます。

Microsoftのドキュメントには、IISワーカープロセスの分離とアプリケーションプールに関する情報が記載されています。

同じIISサーバーで同時に実行される複数のアクティブなOracleホームをセットアップするには:1)Windows Server2003でワーカープロセス分離モードでIIS6を実行します。2)1つのバージョンのOracleクライアントを1つのアプリケーションプールに展開し、2番目のバージョンを別のアプリケーションプールに展開します。 。たとえば、OracleClient9.2.0.2とODP.NET9.2.0.2を1つのアプリケーションプールで使用することができます。また、Oracle Client9.2.0.4およびODP.NET9.2.0.4は、別のアプリケーションプールで使用できます。同じアプリケーションプールで2つのアクティブなOracleホームを使用することはできません。アクティブな各Oracleホームは、異なるプールに存在する必要があります。3)適切なOracleホームクライアントディレクトリを使用するように、各ワーカープロセスのDLLディレクトリを設定します。これを行うには、各ASP.NETアプリケーション内で、Oracle DLLが呼び出される前に、アプリケーションのライフサイクルの早い段階でSetDllDirectory(directory_name)を呼び出します。SetDllDirectory入力変数は、使用されるODP.NETバージョンのOracleホームbinディレクトリです。注:SetDllDirectoryはアンマネージド呼び出しです。

于 2010-04-12T07:39:54.700 に答える