排查 Oracle E-Business Suite 适配器的操作问题

本部分讨论使用故障排除技术来解决在使用 Microsoft BizTalk Adapter for Oracle E-Business Suite 时可能会遇到的操作错误。

启用跟踪

有关 Oracle 电子商务适配器中的跟踪支持的详细信息,请参阅 Oracle 电子商务套件适配器中的诊断跟踪和消息日志记录

已知问题

以下是使用 BizTalk 适配器包时可能遇到的最常见错误及其可能的原因和解决方法。

加载适配器绑定时出错

问题

尝试启动添加适配器服务引用 Visual Studio 插件或使用适配器服务 BizTalk 项目加载项时,收到以下错误:

There was an error loading the binding, <binding name>, from your system configuration.  
ConfigurationErrorsException: Exception has been thrown by the target of an invocation.  

原因

尝试启动“添加适配器服务引用插件”或“使用适配器服务”加载项时,WCF 将加载所有已安装适配器的适配器绑定。 反过来,适配器绑定依赖于企业应用程序的特定客户端软件。 可能由于以下一种或两种原因而面临此问题:

  • 安装适配器的计算机上未安装所需的 LOB 客户端软件。

  • 你执行了适配器的“典型”或“完整”安装,该安装将安装 BizTalk 适配器包中包含的所有适配器。 但是,LOB 客户端库可能只为一个企业应用程序安装。 因此,GUI 无法加载其他适配器的绑定。

    解决方法

  • 确保在安装了 BizTalk 适配器包的计算机上安装所需的 LOB 客户端版本。 有关支持的客户端版本的信息,请参阅安装驱动器>:\Program Files\Microsoft BizTalk 适配器包中<提供的安装指南。

  • 请确保对适配器进行自定义安装,以便仅安装所需的适配器。

Oracle 电子商务套件适配器不显示在 BizTalk Server 管理控制台的适配器列表中

问题

与 BizTalk Server 随附的早期版本的适配器不同,BizTalk 适配器包随附的 Oracle 电子商务适配器不会显示在 BizTalk Server 管理控制台的适配器列表中。

原因

最新的 Oracle 电子商务适配器是 WCF 自定义绑定。 因此,尽管 BizTalk Server 管理控制台显示 WCF-Custom 适配器,但它不显示 WCF 自定义绑定,因此不显示基于 WCF 的 Oracle 电子商务适配器。

解决方法

可以按照将 Oracle 电子商务套件适配器添加到 BizTalk Server 管理控制台中提到的步骤,将 Oracle 电子商务适配器显式添加到 BizTalk Server 管理控制台

在 Oracle 电子商务套件上执行操作时出错

问题

使用 BizTalk Server 在 Oracle 电子商务套件上执行任何操作时,适配器会出现以下错误。

  • 对于BizTalk Server

    System.ArgumentNullException: Value cannot be null.  
    

    原因

    未指定消息的 WCF 操作。 WCF 要求为每个操作指定 SOAP 操作,以通知适配器要对 LOB 应用程序执行的操作。

    解决方法

    在发送端口中指定 SOAP 操作,或指定为 BizTalk 业务流程中的消息上下文属性。 有关说明,请参阅 为 Oracle E-Business Suite 配置 SOAP 操作。 请参阅 Oracle EBS 适配器的消息和消息架构 ,查看每个操作的操作列表。

在接收位置丢弃请求消息时,BizTalk 进程可能因 Oracle 客户端版本不正确而崩溃

问题

在 BizTalk 业务流程中定义的接收位置删除请求消息后,业务流程会使用该消息,BizTalk 主机 (BTSNTSvc.exe) 崩溃并重启。

原因

安装 Oracle 客户端会将引用添加到 PATH 变量中的最新客户端程序集。 此外,对 Oracle 客户端程序集最新安装的引用在对现有客户端程序集的引用之前。 因此,如果最新的 Oracle 客户端安装不是受支持的客户端版本,则 BizTalk 主机崩溃,然后重启。

例如,假定计算机上已安装受支持的 Oracle 客户端 11.1.0.7,并且 PATH 变量具有以下引用:

C:\oracle\product\11.1.0\client_1\bin;  

如果在同一计算机上安装了不受支持的 Oracle 客户端(例如 10.2.0.3),则 PATH 变量将具有以下引用:

C:\oracle\product\10.2.0\db_2\bin;C:\oracle\product\11.1.0\client_1\bin;  

请注意,不支持的客户端版本在受支持的版本之前被引用,因此 BizTalk 主机崩溃。 如果有多个 BizTalk 主机正在运行,则托管适配器的主机会崩溃。

解决方法

如果在同一台计算机上安装了多个 Oracle 客户端,请确保在 PATH 变量中的其他 Oracle 客户端版本之前引用受支持的 Oracle 客户端版本。 例如,如果支持的 Oracle 客户端版本为 11.1.0.7,则 PATH 变量中的引用必须如下所示:

  
C:\oracle\product\11.1.0\client_1\bin;C:\oracle\product\10.2.0\db_2\bin;  

适配器在执行操作时可能会引发溢出异常

问题

如果使用适配器,如果尝试在 DataSets 或弱类型 REF CURSORS 中执行包含 Oracle 数字数据类型的操作,适配器可能会引发溢出异常。

原因

如果在 DataSets 或弱类型 REF CURSORS 中为 Oracle 数字数据类型提供较大值,但不能容纳到相应的 .NET 类型中,则会发生此情况。

解决方法

如果要在 DataSets 或弱类型 REF CURSORS 中传递 Oracle 数字数据类型的大值,则必须通过将 EnableSafeTyping 绑定属性的值设置为 true 来启用安全键入。 启用安全类型化会将 DataSets 或弱类型 REF CURSORS 中的 Oracle 数字数据类型公开为字符串。

适配器在执行 ExecuteScalar 操作时可能会引发算术溢出异常

问题

如果使用适配器,如果尝试在检索大量数据的 ExecuteScalar 操作中执行 SELECT 语句,适配器将引发以下异常:“System.OverflowException: 算术运算导致溢出。”

原因

发生这种情况的原因是 ODP.NET 中 ExecuteScalar 操作的已知限制。 ODP.NET 尝试将数据拟合到 .NET Decimal 数据类型中,如果结果太大而无法适应 .NET Decimal 类型,则会引发异常。

解决方法

在 ExecuteScalar 操作的 SELECT 语句中使用 TO_CHAR () 将返回的数据转换为字符串。

适配器客户端在执行操作时可能会引发以下异常:“无法检索用户 ID、责任 ID、应用程序 ID。检查是否传入了正确的值。”

问题

如果要对 oracle E-Business Suite 项目执行操作, (接口表、接口视图、并发程序和请求集) ,适配器客户端可能会引发此异常。

原因

如果在对接口表、接口视图、并发程序和请求集执行操作时提供 Oracle 用户名、密码和责任名称的组合不正确,则会发生这种情况。 Oracle 电子商务适配器需要这些值,以便为这些项目设置应用程序上下文。 有关设置应用程序上下文的详细信息,请参阅 设置应用程序上下文

解决方法

必须指定 Oracle 用户名、密码和责任的正确组合,以便为 Oracle 电子商务套件项目适当设置应用程序上下文。 若要指定 Oracle 用户名和密码的值,必须使用 OracleUserNameOraclePassword 绑定属性。 若要指定 Oracle 责任的值,可以使用 OracleEBSResponsibilityName 绑定属性或消息上下文属性。

BizTalk 项目中的 RootNode TypeName 错误

问题

在 Visual Studio 中的 BizTalk 项目中,如果从使用适配器服务外接程序生成的架构包含 RootNode TypeName 属性的无效字符或保留字,则在编译项目时将发生以下错误:

Node <node reference> - Specify a valid .NET type name for this root node.  
The current .NET type name of this root node is invalid (it is a reserved BizTalk Keyword or is an invalid C# identifier).  

解决方法

  1. 右键单击错误中引用的 rood 节点,然后选择“ 属性”。

  2. 对于 RootNode TypeName 属性,请删除任何非法字符或保留字,例如 dot (.) 。

在 Visual Studio 中使用适配器时的绑定警告无效

问题

使用适配器在 Visual Studio 2013 中创建应用程序并打开适配器生成的配置文件 (app.config) 时,会看到类似于以下内容的警告:

The element 'bindings' has invalid child element 'oracleEBSBinding'. List of possible elements expected: 'basicHttpBinding, customBinding, ...  

原因

出现此警告是因为 Oracle 电子商务适配器绑定 oracleEBSBinding不是 Windows Communication Foundation (WCF) 附带的标准绑定。

解决方法

可以放心地忽略此警告。

如果在同一个应用程序中使用多个通知架构,或者在同一主机上的多个应用程序之间使用通知架构,BizTalk Server将引发异常

问题

BizTalk Server会引发 XLANG 异常或异常,指出应用程序无法找到文档规范,因为多个架构与消息类型匹配。

原因

发生这种情况的原因是以下任一情况:

  • 已在BizTalk Server项目中生成了多个通知架构,将其部署到BizTalk Server应用程序,然后运行该应用程序以接收来自 Oracle 数据库的通知。 由于通知架构很常见,因此BizTalk Server应用程序中部署的架构之间存在冲突。

  • 对于多个项目,已为每个BizTalk Server项目生成通知架构,将每个项目部署到同一主机上的单独BizTalk Server应用程序,然后运行一个或多个应用程序以接收来自 Oracle 数据库的通知。 由于架构和程序集可以在 BizTalk Server 中跨应用程序访问,因此在各种BizTalk Server应用程序和程序集下部署的常见架构之间存在冲突。

    解决方法

    将单个通知架构文件用于BizTalk Server应用程序。 如果需要在同一主机上的多个BizTalk Server应用程序中使用通知架构,请创建包含单个通知架构的应用程序,然后使用BizTalk Server中所有其他应用程序中的通知架构。

在 Visual Studio 中浏览 Oracle E-Business Suite 项目时出现超时异常

问题

使用添加适配器元数据向导、添加适配器服务引用插件或使用适配器服务加载项在 Visual Studio 项目中浏览 Oracle E-Business Suite 项目时,可能会遇到超时异常。

原因

如果托管 Oracle 电子商务套件的服务器速度缓慢、服务器位于远程位置,或者所查找的架构包含大量项目,则可能会发生这种情况。

解决方法

可以选择增加 SendTimeout 绑定属性的值,或者在 “在类别中搜索 ”文本框中提供搜索表达式,以减少适配器检索的项目数。

有关指定绑定属性的详细信息,请参阅 为 Oracle E-Business Suite 配置绑定属性。 有关在 Oracle 电子商务套件中搜索项目的详细信息,请参阅 浏览、搜索和获取 Oracle 电子商务套件操作的元数据

在事务处理入站操作中使用适配器时,内存使用量和线程计数增加

问题

在事务处理的入站操作(例如轮询)中, 如果要轮询的表中没有可用的数据 ,并且适配器继续轮询,则一段时间内内存使用量和线程计数会增加。

原因

如果轮询的表中没有可用数据,则在每次接收超时周期后,Windows Communication Foundation (WCF) 生成一个新线程以继续轮询操作。 因此,线程计数和内存使用量在一段时间内会增加。 但是,如果要轮询的表包含一些数据,则同一线程将继续执行所有后续轮询。

解决方法

建议将 ReceiveTimeout 设置为最大可能值,即 24.20:31:23.6470000 (24 天) ,以便每 24 天仅生成一个新线程。 这将确保内存使用量和线程计数不会过快增长太快。

有关 ReceiveTimeout 绑定属性的详细信息,请参阅 阅读有关 Oracle E-Business Suite 绑定属性的 BizTalk 适配器。 有关指定绑定属性的说明,请参阅 为 Oracle E-Business Suite 配置绑定属性

注意

使用具有BizTalk Server的适配器时,将超时设置为较大值不会影响适配器的功能。

另请参阅

Oracle EBS 适配器疑难解答