排查 Oracle 数据库适配器的安装问题

Microsoft BizTalk 适配器包的安装将复制计算机上的产品二进制文件,并为每个适配器注册绑定。 本部分讨论使用故障排除技术解决安装错误,还列出了一些已知问题。

安装操作的日志记录消息

BizTalk 适配器包安装程序执行安装 BizTalk 适配器包的标准任务。 此外,安装程序还会执行某些自定义操作,例如注册适配器绑定。 可以记录设置执行的标准和自定义操作的消息。

  • BizTalk 适配器包安装程序使用 MSI 安装适配器特定的文件。 因此,安装程序的日志记录是标准 MSI 日志记录。

  • 安装程序执行的自定义操作的所有日志都位于 %TEMP%\adaptersetup.log。 如果对日志文件的跟踪失败,事件日志中也会提供跟踪。

安装程序无法注册适配器绑定

问题

Microsoft BizTalk 适配器包安装向导无法注册适配器绑定,但会继续安装适配器。

原因

这可能是由于 Windows Communication Foundation (WCF) 安装、Microsoft Windows Communication Foundation (WCF) 业务线 (LOB) 适配器 SDK 安装或 machine.config 文件损坏而导致的。 适配器绑定将写入 machine.config 文件。

解决方法

手动注册 Oracle 数据库适配器绑定:

  1. 导航到计算机上的 machine.config 文件。 例如,在 32 位平台上,machine.config 位于系统驱动器>:\WINDOWS\Microsoft.NET\Framework\<version>\CONFIG 下<。

    在此路径中,<version> 是.NET Framework的版本。

  2. 使用文本编辑器打开文件。

  3. 注册 Oracle 数据库适配器绑定:

    1. 搜索元素“system.serviceModel”,并在其下添加以下内容:

      <client>
        <endpoint binding="oracleDBBinding" contract="IMetadataExchange" name="oracleDb" />
      </client>
      
    2. 在 system.serviceModel\extensions 下搜索元素“bindingElementExtensions”。

    3. 查找缺少的 Oracle 数据库适配器绑定。 在“bindingElementExtensions”节点下添加以下部分。

      对于 Oracle 数据库适配器,请添加:

      <add name="oracleDBAdapter" type="Microsoft.Adapters.OracleDB.OracleDBAdapterExtensionElement,Microsoft.Adapters.OracleDB, Version=<version>, Culture=neutral, PublicKeyToken=<public key>" />
      
    4. 在 system.serviceModel\extensions 下搜索元素“bindingExtensions”。

    5. 查找缺少的 Oracle 数据库适配器绑定。 在“bindingExtensions”节点下添加以下部分。

      对于 Oracle 数据库适配器,请添加:

      <add name="oracleDBBinding" type="Microsoft.Adapters.OracleDB.OracleDBAdapterBindingSection,Microsoft.Adapters.OracleDB, Version=<version>, Culture=neutral, PublicKeyToken=<public key>" />
      

    注意

    有关如何确定公钥和版本的信息,请参阅 确定公钥和版本

  4. 保存并关闭 machine.config 文件。

确定公钥和版本

执行以下步骤来确定 Oracle 数据库适配器的公钥。

  1. 导航到 Windows 目录,通常为 C:\WINDOWS\assembly。

  2. 右键单击需要其公钥和版本的 DLL,然后选择“ 属性”。 下表列出了 Oracle 数据库适配器的 DLL 的名称。

    适配器 DLL 的名称
    Oracle 数据库适配器 Microsoft.Adapters.OracleDB
  3. 在“ 常规 ”选项卡上,针对 “公钥令牌” 标签的值指定 DLL 的公钥。 同样,针对 版本 标签的值指定 DLL 的版本号。

  4. 复制公钥,然后单击“ 取消”。

在 64 位安装上使用适配器服务加载项或添加适配器服务引用插件时出错

问题

在运行 64 位版本的 BizTalk 适配器包的 64 位计算机上,使用添加适配器服务引用 Visual Studio 插件或使用适配器服务 BizTalk 项目外接程序会导致以下错误:

No valid adapters are installed on this machine

原因

Oracle 数据库适配器是 WCF 自定义绑定,在 machine.config 文件中的 System.ServiceModel 下注册。 64 位平台有两个 machine.config 文件,一个由 32 位应用程序使用,另一个由 64 位应用程序使用。 因此,安装 64 位版本的 BizTalk 适配器包时,安装向导会在 64 位版本的 machine.config 文件中注册绑定。 但是,Visual Studio 作为 32 位进程运行,因此,当你从 Visual Studio 启动“使用适配器服务”加载项时,该插件会检查 32 位版本的 machine.config 文件中的绑定,但失败并出现错误。

解决方法

  • 在 64 位 WCF LOB 适配器 SDK 安装上同时安装 32 位和 64 位版本的 BizTalk 适配器包。

    重要

    必须仅安装 64 位 WCF LOB 适配器 SDK。 不支持在单台计算机上并行安装 32 位和 64 位 WCF LOB 适配器 SDK。

  • 使用修补程序集 11.1.0.7 安装适用于 Oracle 客户端 11.1.0.6 的 32 位和 64 位版本的 Oracle 数据访问组件。

    注意

    若要确保应用程序使用最新版本的 ODP.NET,必须在计算机上安装“策略 DLL”并在 GAC 中注册。 有关详细信息,请参阅 Oracle 网站上的 用于 .NET 的 Oracle 数据提供程序

在 64 位安装上在 BizTalk Server 管理控制台中配置 Oracle 数据库适配器端口时出现无效绑定错误

问题

尝试在 BizTalk Server 管理控制台中配置适配器的端口时,收到以下错误:

"Unable to create binding configuration element for editing. Check the values of the BindingType and BindingConfiguration properties.
(Microsoft.Biztalk.Adapter.Wcf.Converters.CreateBindingException) Unable to get binding type for binding extension "oracleDBBinding".
Verify the binding extension is registered in machine.config."

原因

Oracle 数据库适配器是 WCF 自定义绑定,在 machine.config 文件中的 System.ServiceModel 下注册。 64 位平台有两个 machine.config 文件,一个由 32 位应用程序使用,另一个由 64 位应用程序使用。 因此,安装 64 位版本的 BizTalk 适配器包时,安装向导会在 64 位版本的 machine.config 文件中注册绑定。 但是,BizTalk Server管理控制台作为 32 位进程运行,因此,在为适配器配置端口时,它会检查 32 位版本的 machine.config 文件中的绑定,但无法显示错误。

解决方法

  • 在 64 位 WCF LOB 适配器 SDK 安装上同时安装 32 位和 64 位版本的 BizTalk 适配器包。

    重要

    必须仅安装 64 位 WCF LOB 适配器 SDK。 不支持在单台计算机上并行安装 32 位和 64 位 WCF LOB 适配器 SDK。

  • 使用修补程序集 11.1.0.7 安装适用于 Oracle 客户端 11.1.0.6 的 32 位和 64 位版本的 Oracle 数据访问组件。

    注意

    若要确保应用程序使用最新版本的 ODP.NET,必须在计算机上安装“策略 DLL”并在 GAC 中注册。 有关详细信息,请参阅 Oracle 网站上的 用于 .NET 的 Oracle 数据提供程序

另请参阅

Oracle 数据库适配器疑难解答