BizTalk 2020 WCF-OracleDB adapter Error

Copper Contributor

I am trying to create a WCF-Oracle DB send port and I get this error. I have Installed both ODP.NETUnmanaged19.10Xcopy32bit and ODP.NETUnmanaged19.10Xcopyx64 and used the command OraProvCfg.exe /action:gac /providerpath:"Oracle.DataAccess.dll" to Gac the Dlls. Also I have changed the machine config on both Framework and Framework64 to point to this version.

<runtime>
<assemblyBinding xmlns="urn: schemas-microsoft-com: asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" />
<bindingRedirect oldVersion="4.122.18.3" newVersion="4.122.19.1" />
</dependentAssembly>
</assemblyBinding>
</runtime>

 

I am running out of ideas here. Any body encountered the same issue?

 

WCFOracleDB error.png

 

6 Replies
If you changed BTSNTSvc.exe.config / BTSNTSvc64.exe.config files, you may also need to change MMC.exe.config (BizTalk admin console) for BizTalk admin console. You may also need to change the Oracle.DataAccess.Client to point to newer version (see below).

-----
https://docs.microsoft.com/en-us/biztalk/adapters-and-accelerators/post-installation-steps-for-bizta...
-----

<dependentAssembly>
<publisherPolicy apply="no" />
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="4.122.19.1" />
<!--<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="4.122.18.3" /> -->
</dependentAssembly>
</assemblyBinding>
</runtime>

<system.data>
<DbProviderFactories>
<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
<!--<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.122.18.3, Culture=neutral, PublicKeyToken=89b483f429c47342" />-->
</DbProviderFactories>
</system.data>
------

I would also make sure to update to the latest BizTalk 2020 CU (CU2 currently) as there were some updates related to Oracle adapter after initial RTM release.

I hope this helps.

Thank you @NiklasE , I will check this and let you know.

@NiklasE 

Hi

I tried the suggestions given here.

Still i am stuck with following error:

“Could not load file or assembly 'Oracle.DataAccess, Version=4.122.18.3, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies.

The system cannot find the file specified. (Microsoft.Adapters.OracleDB)”

Any suggestions on this?

Tx

Hari

 

@harik98 I would suggest to restart uninstalling previous attempts/unGAC and try the latest 19c unmanaged XCopy client. 

https://www.oracle.com/database/technologies/net-downloads.html

 

Oracle XCopy unmanaged .NET client installation :

If not default location (ORACLE_HOME\network\admin), create a System Environment Variable for :

  Name:   TNS_ADMIN

  Path (change to your location) :      c:\oracle\network\admin\

CD C:\Oracle\Setup-19x-32bit

:: Install all to 32-bit folder, 32-bit home name. You can omit the last TNS_ADMIN location parameter if using the default location

install.bat all c:\oracle\ora19c32 ora19c32 true true c:\oracle\network\admin

CD c:\oracle\ora19c32

:: Uninstall 32-bit ORAMTS since we will use the 64-bit ORAMTS and you can only have one ORAMTS running.

uninstall.bat ORAMTS ora19c32

CD C:\Oracle\Setup-19x-64bit

install.bat all c:\oracle\ora19c64 ora19c64 true true c:\oracle\network\admin

:: Then manually add these paths to Path System environment variable

c:\oracle\ora19c64

c:\oracle\ora19c32

:: check GAC

gacutil /l | find /I "4.12"

  Oracle.DataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64

  Oracle.DataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86

  Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=MSIL

:: Add AssemblyRedirect in BizTalk .config files and mmc.exe.config for it to use the latest client

  <runtime>

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

      <dependentAssembly>

        <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342"  culture="neutral" />

        <bindingRedirect oldVersion="4.0.0.0-4.65535.65535.65535" newVersion="4.122.19.1" />

      </dependentAssembly>

    </assemblyBinding>

  </runtime>

 @harik98 Don't use regular VS cmd to GAC the dlls. You should install dll with: oraprovcfg.exe /action:gac /providerpath:Oracle.DataAccess.dll that supplies to put dll in gac and change machine.config.

@NareshDevalla @harik98  If you use install.bat the 5th parameter should do the GAC + machine.config also if you set true for this parameter. 

--------
Install.bat

COMPONENT_NAME: (Required) ODAC component to install and configure. Values: ODPM (Managed ODP.NET), ODP.NET4 (Unmanaged ODP.NET), ORAMTS (Oracle Services for MTS), etc., or ALL (all components).

 

ORACLE_HOME_PATH: (Required) Directory to install ODAC into. Be mindful if installing to a protected Windows directory, such as C:\Users\&lt;USER NAME&gt;. These directories may have permission restrictions for who can run and which apps can be run.

 

ORACLE_HOME_NAME: (Required) Unique Oracle Home name.

 

INSTALL_DEPENDENTS: (Optional) When set to true, the script installs any dependencies the components require. Default value is true.

 

MACHINE_WIDE_CONFIGURATION: (Optional) When set to true, the script will configure ODP.NET for machine-wide default use. It makes global changes to the machine's .NET setup, including placing the provider assembly into the Global Assembly Cache (GAC) and updating the <i>machine.config</i> with configuration section handler and DbProviderFactory information. This parameter only works for ODPM (Managed Driver for .NET Framework 4) and ODP.NET4 (Unmanaged Driver for .NET Framework 4).  Default is false.

 

TNS_ADMIN_LOCATION: (Optional) Directory that ODAC finds tnsnames.ora and/or sqlnet.ora configuration files. This setting is made in the Windows Registry.