問題は、ODP.NET 2.111 と ODP.NET 4.112 を同じマシンに並べてインストールし、両方が tnsnames.ora を使用して同じデータベース サーバーを指すようにする方法です。
Oracle 11.1.0 に基づくレガシー システムをサポートする必要があります。システムは ODP.NET 2.111 を使用して Oracle に接続しています。次の場所に 2 つのクライアントがインストールされています。
C:\oracle\product\11.1.0\client_1
C:\oracle\product\11.1.0\client_2
両方の tnsnames.ora は次のようなものです。
xxxx1_SERVICE=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxxx2)(PORT = xxx3))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = xxx4)
)
)
yyyy1_SERVICE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = yyyy2 )(PORT = yyyy3))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = yyyy4)
)
)
kkkk1_SERVICE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = kkkkk2 )(PORT = kkkk3))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = kkk4)
)
)
pppp1_SERVICE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ppppp2 )(PORT = pppp3))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = pppp4)
)
)
oooo1_SERVICE = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ooooo2 )(PORT = oooo3))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oooo4)
)
)
システムは上記の設定を使用して稼働しています。新しいバージョンの Oracle.DataAccess.Dll (4.112) を使用する必要がある EntityFramework に基づく新しいシステムを開発する必要があります。
レガシーシステムの機能を損なわずに新しいクライアントをインストールして、両方が並行して動作できるようにするにはどうすればよいか疑問に思っていました。
注: 以前のクライアントに新しい ODP.NET をインストールしようとしたところ、次の接続文字列を使用してデータベースに接続できました。
DATA SOURCE=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=zzzzz1)(PORT=zzzzz2)))(CONNECT_DATA=(SERVICE_NAME=zzz3_SERVICE)));ユーザーID=\"zzzz4\";パスワード=\"zzzz5\";
1- ODP.NET のアップグレードにより Oracle に接続できなくなるため、レガシー システムが壊れる 2- 接続文字列が非常に奇妙に見えるため、これは望ましくありません。
助けていただければ幸いです。
ありがとう、エイディン