Search code examples
odp.netoracleclient

Oracle.DataAccess still try to access oraops12.dll after uninstall


First I have both 11 and 12 oracle client on my machine. But when i try to use 11g version of oracle.dataacess.dll .

I already remove a 12c register on regedit and stop service and machince.config related. but the program was throw "Unable to load oraops12.dll..".

Which path that oracle.dataacess find a config for dll? Why did it still try to load oraops12 not oraops11.

Thank you in advance.


Solution

  • There is a policy file in your GAC that is using the "bindingRedirect" tag

    Policy.2.112.Oracle.DataAccess.config

    Do a search for the file (I use Agent Ransack) then edit it.

    The contents of the file look like this

    <configuration>
       <runtime>
          <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
              <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342"/>
                <bindingRedirect oldVersion="2.112.2.0-2.112.9999.9999" newVersion="2.121.1.0"/>
            </dependentAssembly>
          </assemblyBinding>
       </runtime>
    </configuration>
    

    For some reason, if you install Oracle 12, then try and uninstall it (even using gacutil.exe /u), the binding redirect is left in.

    On my machine, it was in C:\Windows\assembly\GAC_32\Policy.2.112.Oracle.DataAccess\2.121.2.0__89b483f429c47342\Policy.2.112.Oracle.DataAccess.config

    It is inaccessible via explorer, use agent ransack to track it down, then right click it and open it in an editor.