PC:Windows10
Oracle12cのDBとOracleClient(64bit)をインストールしました。
VB.NETのアプリからODP.NETでDBに接続しようとすると
以下のようなメッセージが出て接続できませんでした。
例外情報:
System.AccessViolationException
コネクションのOpenのところで発生。
他の同じような設定の端末(Win10、Oracle Client12c)からODP.NETで上記のデータベースに接続すると、問題なく繋がるが、他複数台で発生するエラー。
環境変数、GACも同じ設定。
OSの再インストールからやり直しても同じエラーが発生。
結局のところ、
原因はいまだ不明ですが以下の方法でエラーなく動作することができました。
↓
Oracle.DataAccess.dllをGACに再登録。
(OracleClientのOraProvCfgにて)
以下、その手順です。
1.管理者権限でコマンドプロンプトを開き、ORACLE_HOMEにOracleClientのディレクトリパスを設定
SET ORACLE_HOME=D:\oracle\client\product\12.1.0\client_1
2.OraProvCfg.exeが格納されているディレクトリへ移動
cd /d %ORACLE_HOME%\ODP.NET\bin\4
3.Oracle.DataAccess.dllをGACに登録
OraProvCfg /action:gac /providerpath:%ORACLE_HOME%\ODP.NET\bin\4\Oracle.DataAccess.dll
4.Policy.4.121.oracle.dataaccess.dllをGACに登録
OraProvCfg /action:gac /providerpath:%ORACLE_HOME%\ODP.NET\PublisherPolicy\4\Policy.4.121.oracle.dataaccess.dll
5.Oracle.DataAccess.resources.dllをGACに登録
OraProvCfg /action:gac /providerpath:%ORACLE_HOME%\ODP.NET\bin\4\Oracle.DataAccess.resources.dll
6.PCを再起動
結果、GACの再登録です(;^ω^)
なぜそうなったのかは、不明。
これだからWindowsは・・・・・。